WP_START_OBJECT_CACHE() │ WP 3.0.0
Введение
Функция WP_START_OBJECT_CACHE() запускает объектный кэш в WordPress. Если в директории wp-content существует файл object-cache.php, эта функция будет использовать его в качестве внешнего объекта кэша.
Важно отметить, что это внутренняя функция, предназначенная для использования только ядром WordPress, поэтому не рекомендуется использовать её в вашем коде.
Хуки функции
- enable_loading_object_cache_dropin — этот хук позволяет включить загрузку
object-cache.phpи используется до того, как он будет доступен для плагинов.
Возврат
- Функция ничего не возвращает (null).
Использование
Для запуска кэша используйте следующую команду:
wp_start_object_cache();
Пример использования
Несмотря на название, примеры использования этой функции не имеют смысла, так как она вызывается автоматически в файле wp-settings.php на ранних этапах загрузки ядра WordPress.
Добавьте свой собственный пример.
Заметки
- Глобальный массив:
$wp_filterхранит все фильтры.
История изменений
- Версия 3.0.0: функция была введена.
Код функции WP_START_OBJECT_CACHE()
Функция wp_start_object_cache() написана в файле wp-includes/load.php. Вот её код:
function wp_start_object_cache() {
global $wp_filter;
static $first_init = true;
// Производим проверки только один раз.
/**
* Фильтр, который определяет, будет ли загружен drop-in object-cache.php.
*
* Этот фильтр выполняется до того, как он может быть использован плагинами.
* Он предназначен для выполнения вне веба. Если возвращается false,
* object-cache.php не будет загружен.
*
* @since 5.8.0
*
* @param bool $enable_object_cache следует ли включить загрузку object-cache.php (если он присутствует).
* По умолчанию true.
*/
if ( $first_init && apply_filters( 'enable_loading_object_cache_dropin', true ) ) {
if ( ! function_exists( 'wp_cache_init' ) ) {
/*
* Это обычная ситуация. Первый запуск этой функции.
* Кэш-задний план не загружен.
*
* Пытаемся загрузить пользовательский кэш-задний план,
* и если в результате в системе появляется функция wp_cache_init(),
* отмечаем, что используется внешний объектный кэш.
*/
if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
require_once WP_CONTENT_DIR . '/object-cache.php';
if ( function_exists( 'wp_cache_init' ) ) {
wp_using_ext_object_cache( true );
}
// Переинициализация любых хуков, добавленных вручную object-cache.php.
if ( $wp_filter ) {
$wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter );
}
}
} elseif ( ! wp_using_ext_object_cache() && file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
/*
* В некоторых случаях advanced-cache.php может загрузить object-cache.php до
* того, как эта функция будет выполнена. Это нарушает проверку function_exists()
* выше и может привести к тому, что wp_using_ext_object_cache() вернёт
* false, когда на самом деле используется внешний кэш.
*/
wp_using_ext_object_cache( true );
}
}
if ( ! wp_using_ext_object_cache() ) {
require_once ABSPATH . WPINC . '/cache.php';
}
require_once ABSPATH . WPINC . '/cache-compat.php';
/*
* Если кэш поддерживает сброс, выполняем сброс вместо инициализации, если он уже
* инициализирован. Сброс сигнализирует кэшу, что глобальные ID
* изменились, и он, возможно, должен обновить ключи и почистить кэши.
*/
if ( ! $first_init && function_exists( 'wp_cache_switch_to_blog' ) ) {
wp_cache_switch_to_blog( get_current_blog_id() );
} elseif ( function_exists( 'wp_cache_init' ) ) {
wp_cache_init();
}
if ( function_exists( 'wp_cache_add_global_groups' ) ) {
wp_cache_add_global_groups(
array(
'blog-details',
'blog-id-cache',
'blog-lookup',
'blog_meta',
'global-posts',
'image_editor',
'networks',
'network-queries',
'sites',
'site-details',
'site-options',
'site-queries',
'site-transient',
'theme_files',
'translation_files',
'rss',
'users',
'user-queries',
'user_meta',
'useremail',
'userlogins',
'userslugs',
)
);
wp_cache_add_non_persistent_groups( array( 'counts', 'plugins', 'theme_json' ) );
}
$first_init = false;
}
Заключение
В этой статье мы изучили функцию wp_start_object_cache() в WordPress. Она запускает механизм кэширования объектов, что позволяет ускорить выполнение запросов и улучшить производительность сайта. Несмотря на то, что она не предназначена для использования напрямую в коде, понимание её работы поможет вам лучше разобраться в том, как WordPress управляет кэшированием.
Если вы хотите изучить другие функции и настройки WordPress, продолжайте следить за нашими обновлениями!