Увижу ли я снижение производительности, если буду использовать собственные вызовы API, такие как get the title() вместо $post->заголовок сообщения?
Допустим, я уже получил объект $post с помощью некоторого более раннего процесса циклического перебора массива идентификаторов и использования get_post() для каждого из них, сохраняя полученный объект в некотором массиве.
Позже я хочу просмотреть этот массив и что-то сделать с каждым сообщением. У меня уже есть объект $my_post, так что я мог бы echo $my_post->post_title
, или я мог бы пофантазировать и echo apply_filters('the_title', $my_post->post_title, $my_post->ID)
, или я мог бы просто использовать родной get_the_title($my_post->ID)
.
Вот где возникает мой вопрос о производительности. Как надежен ли собственный кэш (я не говорю о каком-то сумасшедшем плагине, просто встроенный wp_cache_get($post_id, 'posts')
и т. Д.)?
Я думаю, что я спрашиваю: какова вероятность того, что get_the_title() вернется в БД и повторно захватит сообщение, в отличие от использования кэша, и будет ли мне лучше с точки зрения производительности просто использовать данные объекта, которые у меня уже есть? Очевидно, что вы получаете больше сахара, если используете встроенный материал. Но рискует ли он вернуться в БД?
1 answers
Теги шаблонов полагаются на глобальные $post
(если вы явно не предоставляете что-то другое тем, кто его поддерживает. Так что либо:
Они получают что-то из этой переменной (нет причин искать это в базе данных)
Или они этого не делают (тогда они терпят неудачу, потому что понятия не имеют, чего вы хотите)
В большинстве нормальных обстоятельств нет причин беспокоиться о влиянии тегов шаблонов. Это вступает в игру только в том случае, если вы начнете иметь дело с сумасшедшей суммой сообщений и/или применять чрезмерно сложные фильтры.
Обновление после обсуждения в комментариях
get_post()
всегда пытается вызвать кэш перед вызовом базы данных. Кэш очищается функциями, которые явно изменяют записи (см. clean_post_cache()
) или истекает естественным путем.