Существуют разные способы сделать ваш сайт более эффективным: специализированные плагины позволяют кэшировать страницы для статического HTML-контента, другие позволяют кэшировать все SQL-запросы и данные, и, наконец, некоторые позволяют минимизировать файлы JavaScript и CSS и даже решения на стороне сервера.
Но даже если вы используете эти плагины, с помощью методов Кэширование внутренний для объектов базы данных и результатов данные будет хорошей практикой разработки, поскольку ваш плагин не зависит от любого решения для кэширования, которое есть у конечного пользователя. Ваш плагин должен быть быстрым сам по себе и не должен полагаться на другие плагины для выполнения грязной работы. И если вы думаете, что должны написать свой собственный код управления кешем, вы ошибаетесь. WordPress поставляется со всем необходимым для быстрой реализации различных Кэширование de данные. Вам просто нужно определить части вашего кода, которые выиграют от оптимизации, и выбрать тип оптимизации. Кэширование Следовательно.
WordPress реализует два разных метода кеширования:
не постоянны
Данные остаются в кеше, пока страница загружается. (WordPress использует его для кэширования большинства результатов запроса из базы данных..)
настойчивый
Это зависит от того, как работает база данных, и кэшированные данные могут самоуничтожиться через определенное время. (WordPress использует его для кэширования RSS-каналов, обновлений и т. Д.).
В этом уроке мы рассмотрим только непостоянный кеш.
Как настроить непостоянный кеш "Non-Persistent"
Когда вы используете такие функции, как " get_posts () "Или" get_post_meta () WordPress сначала проверяет, кэшированы ли нужные вам данные. Если да, то вы получите данные из кеша; в противном случае для получения этих данных будет выполнен запрос к базе данных. Как только данные будут восстановлены, они также будут кэшированы. Непостоянный кеш рекомендуется для результатов базы данных, которые можно повторно использовать при создании страницы.
Внутренний непостоянный кеш-код WordPress находится в файле " cache.php "В каталоге" wp-includes "и управляется WP_Object_Cache ". Нам нужно использовать две основные функции: " wp_cache_set () "И" wp_cache_get () В то же время, как дополнительные функции " wp_cache_add () "," wp_cache_replace () "," wp_cache_flush () "И" wp_cache_delete () ». Кэшированное хранилище организовано в группы, каждая запись которых требует своего уникального ключа. Чтобы избежать смешивания данных WordPress по умолчанию, рекомендуется использовать уникальные имена.
Примеры
В этом примере мы собираемся создать функцию с именем «d4p_get_all_post_meta ()», которая извлекает все метаданные, связанные со статьей. Эта первая версия не включает кеширование.
function d4p_get_all_post_meta($post_id) {
global $wpdb;
$data = array();
$raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );
foreach ( $raw as $row ) {
$data[$row['meta_key']][] = $row['meta_value'];
}
return $data;
}
Каждый раз, когда вы вызываете эту функцию для одной и той же статьи, будет выполняться SQL-запрос. Вот модифицированная функция, которая использует непостоянный кеш WordPress:
function d4p_get_all_post_meta($post_id) {
global $wpdb;
if ( ! $data = wp_cache_get( $post_id, 'd4p_post_meta' ) ) {
$data = array();
$raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );
foreach ( $raw as $row ) {
$data[$row['meta_key']][] = $row['meta_value'];
}
wp_cache_add( $post_id, $data, 'd4p_post_meta' );
}
return $data;
}
Здесь мы используем кеш-группу с именем " d4p_post_meta ", И" post_id ", который является ключом. С помощью этой функции мы проверим, нужны ли нам все данные в памяти. В противном случае мы запустим обычный код для получения данных, а затем добавим их в кеш в строке 13. Таким образом, если вы вызовете эту функцию более одного раза, только первая из них выполнит SQL-запрос. Все остальные вызовы будут извлекать данные из кеша. Здесь мы используем функцию " wp_cache_add ", Поэтому, если комбинация" группа ключей "уже существует, она не будет заменена. Сравните это с " wp_cache_set Который всегда заменит существующее значение без проверки.
Как видите, мы только что внесли небольшое изменение в существующий код, но потенциально сохранили множество вызовов базы данных, что потенциально ускорило загрузку.
Важные замечания
Непостоянный кэш доступен только во время загрузки текущей страницы; когда последующие загрузки страницы, он будет снова пуст.
Размер хранилища ограничен общим объемом доступной памяти PHP, выделенной сервером. Не храните большой набор данных, иначе вы можете получить сообщение «Недостаточно памяти».
Использование кеша этого типа имеет смысл только для операций, повторяемых более одного раза во время создания страницы.
Он работает с WordPress, начиная с выпуска 2.0.
Это все, что касается этого урока. Надеюсь, это поможет вам лучше кэшировать ваш блог.