Как кешировать меню в WordPress с помощью объектного кеша

Кеширование меню (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 с помощью объектного кеша. Этот метод поможет вашему сайту работать быстрее, особенно если у вас много элементов в меню.

Leave a Reply

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