Я давно задавал себе этот вопрос.Возможно, кто-то уже покопался (или участвует в WP), чтобы узнать ответ.
Я говорю о хранении объектов из WP-функций в PHP-переменных на время загрузки страницы, например, дляИзбегайте необходимости запрашивать базу данных дважды для одного и того же набора результатов.
I не означает кэширование в смысле предварительного рендеринга динамических страниц и сохранения их в формате HTML для более быстрого поиска.
Несколько «шаблонных тегов» (функций Wordpress) могут использоваться несколько раз в теме во время загрузки одной страницы.Когда тема или плагин вызывает такую функцию, запускает ли WP запрос базы данных каждый раз, чтобы получить необходимые данные, и анализирует ли он эти данные каждый раз, чтобы вернуть нужный объект?
Или, функция сохраняет свой результат в переменной PHP при первом запуске и проверяет, существует ли она уже, прежде чем запросить базу данных или проанализирует?
Примеры включают в себя:
wp_get_nav_menu_object()
wp_get_nav_menu_items()
wp_list_categories()
wp_tag_cloud()
wp_list_authors()
.... но также такие важные функции, как bloginfo()
или wp_nav_menu()
.
Конечно, не имеет особого смысла кэшировать все запросы, например пост-связанные.Но для приведенных выше примеров (есть и другие), я думаю, что так и будет.
До сих пор я сам кэшировал эти универсальные функции, когда тема требовала, чтобы одна и та же функция вызывалась на странице более одного раза., написав свои собственные функции или классы и кэшируя в глобальных или статических переменных.Я не понимаю, почему я должен увеличивать нагрузку на сервер, выполняя один и тот же общий запрос более одного раза.
Существует ли такой тип кэширования в Wordpress?