В современных многоязычных сайтах на WordPress одна из частых проблем — правильное кэширование страниц на разных языках. Особенно это актуально при использовании плагина WP Super Cache, который эффективно ускоряет работу сайта, но по умолчанию не всегда корректно обрабатывает языковые версии. В этой статье разберем, как настроить WP Super Cache для работы с многоязычными сайтами, чтобы кэш правильно разделял страницы по языковым версиям, а пользователи получали релевантный контент.
Почему важно разделять кэш для разных языков
Если кэш не разделяется по языкам, пользователь может увидеть страницу на другом языке, так как WP Super Cache по умолчанию кэширует страницу по URL без учёта локали или параметров. Это приводит к плохому UX и снижению качества сайта, особенно если используется плагин для многоязычности, например Polylang или WPML.
Разделение кэша по языкам гарантирует, что для каждого языка создаётся свой кэш-файл, что критично для правильного отображения контента.
Как WP Super Cache обрабатывает URL и кэширование
WP Super Cache создает статические HTML-файлы для URL, которые посещают пользователи. Обычно он кэширует страницу по основному URL. В случае с многоязычными сайтами URL могут отличаться двумя способами:
- Языковым префиксом в URL, например
site.ru/en/иsite.ru/ru/ - Параметром в URL, например
site.ru?page=123&lang=en
WP Super Cache по умолчанию различает URL с разными путями, но параметры в URL могут не учитываться, поэтому важно понимать, как ваш плагин многоязычности реализует локализацию.
Настройка WP Super Cache для многоязычных сайтов
Для правильной работы с языковыми версиями нужно проделать несколько шагов.
1. Проверка URL структуры
Убедитесь, что URL языковых версий отличаются по пути (например, site.ru/en/ и site.ru/ru/). Это самый простой вариант, который WP Super Cache распознаёт из коробки и создаёт отдельные кэш-файлы.
2. Добавление исключений и правил для параметров
Если язык передается через GET-параметр, например ?lang=ru, нужно настроить WP Super Cache так, чтобы он учитывал эти параметры. В настройках плагина в разделе «Advanced» можно добавить параметры, которые влияют на кэширование, в поле Rejected URLs или использовать фильтры для более тонкой настройки.
3. Использование хуков WP Super Cache для разделения кэша по языкам
Если стандартных настроек недостаточно, можно написать небольшой код, который заставит WP Super Cache учитывать язык при формировании имени кэш-файла.
function wpsupercache_ru_cache_key_by_language( $cache_key ) {
if ( function_exists( 'pll_current_language' ) ) { // для Polylang
$lang = pll_current_language();
} elseif ( defined( 'ICL_LANGUAGE_CODE' ) ) { // для WPML
$lang = ICL_LANGUAGE_CODE;
} else {
$lang = 'default';
}
return $cache_key . '_' . $lang;
}
add_filter( 'wpsupercache_cache_key', 'wpsupercache_ru_cache_key_by_language' );
Этот фильтр добавляет код языка к ключу кэша, гарантируя уникальность кэша для каждого языка.
Рекомендации по работе с популярными мультиязычными плагинами
Polylang
Polylang добавляет языковой префикс в URL по умолчанию. WP Super Cache отлично работает с такими URL. Если используется параметр lang, рекомендуется настроить WP Super Cache, чтобы учитывать этот параметр в кэше. Можно использовать фильтр из примера выше.
WPML
WPML использует константу ICL_LANGUAGE_CODE для определения текущего языка. В этом случае код выше также подойдет. Дополнительно стоит проверить, что кэш не кэширует страницы с пользовательскими ролями и языковыми кукисами, чтобы избежать проблем.
Полезные советы для отладки многоязычного кэширования
- Очистите весь кэш после внесения изменений в конфигурацию языков.
- Проверьте кэширование в режиме инкогнито, чтобы исключить влияние кук и сессий.
- Используйте инструменты разработчика браузера для проверки заголовков
X-Cacheи прочих, которые показывает WP Super Cache. - Если используете CDN, убедитесь, что он корректно кеширует по языковым URL.
Подводим итоги
Кэширование многоязычных страниц — важный момент для ускорения сайта и улучшения пользовательского опыта. WP Super Cache можно настроить для корректной работы с языковыми версиями как через стандартные настройки, так и с помощью кастомного кода. Используйте фильтр wpsupercache_cache_key для добавления языка в ключ кэша и проверяйте работу на тестовых страницах.
Если хотите дополнительно оптимизировать работу сайта, обратите внимание на плагины из WPShop.ru, например Clearfy Pro для оптимизации ядра WordPress и Expert Review для управления отзывами на многоязычных сайтах.