WP_CACHE_SET() │ WP 2.0.0
Функция WP_CACHE_SET() сохраняет данные в объектный кэш. Если кэш с указанным ключом уже существует, его содержимое будет перезаписано.
Различие между данной функцией и wp_cache_add() заключается в том, что WP_CACHE_SET() может как добавлять, так и перезаписывать данные, тогда как wp_cache_add() позволяет добавлять только новые данные.
Связанные функции
- wp_cache_add() — добавляет новые данные в объектный кэш; если кэш с указанным ключом уже существует, ничего не делает.
- wp_cache_get() — извлекает данные из объектного кэша.
Использование и производительность
WP_Object_Cache::set()
1 раз — 0.000174 сек (быстро)
50000 раз — 1.98 сек (быстро)
PHP 7.1.11, WP 4.9.8
Нет хуков
Возврат значения
Функция возвращает true в случае успеха и false в случае ошибки.
Пример использования
Для использования функции необходимо выполнить следующий вызов:
wp_cache_set( $key, $data, $group, $expire );
$key(int/string) (обязательно) — ключ кэша, который будет использоваться для будущего извлечения данных.$data(mixed) (обязательно) — содержимое (данные), которое необходимо сохранить в кэше.$group(string) — группа, в которой будут собираться данные кэша. Это позволяет использовать один и тот же ключ в разных группах. По умолчанию:''.$expire(int) — время действия кэша в секундах. Не нужно использовать этот параметр, если на сайте нет установленного плагина постоянного кэша, так как без него WordPress хранит кэш только на время генерации страницы, и этот параметр игнорируется. По умолчанию:0(нет истечения).
Пример 1: Сохранение данных в кэше и их извлечение
Предположим, мы сделали сложный запрос к базе данных, и его результат потребуется в разных частях страницы. Мы можем сохранить этот результат в кэше и получать его при каждом обращении. Таким образом, мы избегаем повторного выполнения одного и того же запроса для одной страницы.
$cache_key = 'my_db_result';
// Выполняем запрос к базе данных и сохраняем его в кэш, если данные с таким ключом еще не были сохранены
$my_db_result = wp_cache_get( $cache_key );
if ( false === $my_db_result ) {
global $wpdb;
$my_db_result = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'books'");
wp_cache_set( $cache_key, $my_db_result );
}
// $my_db_result имеет такое же содержимое, как и в кэше
print_r( $my_db_result );
Примечания
- Смотрите: WP_Object_Cache::set().
- Глобальный объект
WP_Object_Cache:$wp_object_cache.
Изменения
- С версии 2.0.0 — функция введена.
Связанные функции
Объектный кэш (кэширование)
- _prime_post_caches()
- clean_comment_cache()
- clean_post_cache()
- clean_user_cache()
- wp_cache_add()
- wp_cache_add_global_groups()
- wp_cache_add_non_persistent_groups()
- wp_cache_decr()
- wp_cache_delete()
- wp_cache_flush()
- wp_cache_flush_runtime()
- wp_cache_get()
- wp_cache_get_last_changed()
- wp_cache_incr()
- wp_cache_replace()
- wp_clean_update_cache()
- WP_Embed::delete_oembed_caches()
- wp_using_ext_object_cache()
Эта статья поможет вам не только понять, как работает функция WP_CACHE_SET(), но и использовать её для оптимизации запросов к базе данных на вашем сайте WordPress.