Кеширование меню (WP_NAV_MENU) с использованием объектного кеша
В этой статье мы расскажем, как кешировать код всего меню с помощью объектного кеша в WordPress. Это поможет ускорить загрузку вашего сайта, экономя ресурсы. Кеш будет очищен, когда вы обновите меню. Этот метод работает для всех меню в WordPress.
Краткое описание кода
Ниже представлен код, который демонстрирует, как реализовать кеширование для функции wp_nav_menu()
.
menu ) )
return $output;
$cache_key = self::_cache_key( $args );
self::$cache_menus[] = $cache_key;
$cache = get_transient( $cache_key );
if ( is_array( $cache ) && $cache['timestamp'] >= self::_timestamp() ) {
$output = $cache['html'] . '';
}
return $output;
}
public static function maybe_cache_nav_menu( $html, $args ) {
$cache_key = self::_cache_key( $args );
if ( ! in_array( $cache_key, self::$cache_menus ) )
return $html;
$cache = array(
'html' => $html,
'timestamp' => time(),
);
set_transient( $cache_key, $cache, self::$ttl );
return $html;
}
public static function clear_caches() {
update_option( 'pj-cached-nav-menus-timestamp', time() );
}
}
Как это работает?
-
Кеширование меню: Когда вы вызываете функцию
wp_nav_menu()
, код проверяет, есть ли кеш. Если есть, он возвращает этот кеш. Если кеша нет, он сохраняет новое меню в кеш. -
Ключ кеша:
private static function _cache_key( $args )
создаёт уникальный ключ для кеша на основе параметров. Это позволяет избежать конфликта между разными меню. -
Таймстамп: Функция
private static function _timestamp()
помогает управлять временем, когда меню обновляется, чтобы указывать, как долго хранить кеш.
Примечания
-
Время жизни кеша: Значение
self::$ttl
определяет, как долго кеш будет храниться. Значение3600
обозначает 1 час. Если вы хотите, чтобы кеш хранился навсегда, установите значение на0
. -
Очищение кеша: При обновлении меню вызывается функция
clear_caches()
, которая обновляет время, если вы хотите сбросить кеш.
Теперь вы знаете, как можно кешировать меню в WordPress с помощью объектного кеша. Этот метод поможет вашему сайту работать быстрее, особенно если у вас много элементов в меню.