WP_CACHE_SET(): Как добавить или перезаписать данные в кэше.

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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *