Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент 

Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент
Содержание

Многоязычный веб-сайт должен предоставлять правильный переведенный контент нужным посетителям, не жертвуя при этом скоростью. Именно здесь кэширование многоязычных веб-сайтов становится крайне важным, помогая переведенным страницам загружаться быстрее и уменьшая количество повторных запросов к серверу. Однако кэширование нескольких языковых версий может создавать проблемы, такие как устаревшие переводы, контент на неправильном языке и непоследовательные результаты для поисковых роботов.

В этом руководстве мы рассмотрим наиболее распространенные проблемы многоязычного кэширования и объясним, как Cloudflare и Varnish обрабатывают переведенный контент. Читайте дальше, чтобы выбрать правильную стратегию кэширования, предотвратить попадание в кеш между разными языками и создать надежную систему для вашего многоязычного веб-сайта.

Основные моменты: Многоязычное кэширование веб-сайта с использованием Cloudflare и Varnish

1
Отдельные языковые версии

Используйте URL-адреса или ключи кэширования для каждого языка, чтобы гарантировать, что каждая переведенная версия будет храниться и предоставляться отдельно. Это помогает предотвратить получение пользователями контента на неправильном языке.

2
Предотвращение конфликтов кэша

Varnish и Cloudflare должны учитывать языковую информацию из URL-адресов, заголовков или файлов cookie. Правильная настройка предотвращает попадание в кэш между разными языками и гарантирует, что посетители получат корректный перевод.

3
Поддерживайте актуальность переводов

Установите соответствующие значения TTL для кэша и очищайте затронутые кэши при каждом обновлении переводов. Это предотвратит отображение устаревшего контента для посетителей.

Почему многоязычное кэширование важно?

Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент

На многоязычных сайтах может быть несколько кэшированных версий одной и той же страницы, поскольку каждый язык может содержать разный контент и URL-адреса. Кэширование этих переведенных версий позволяет веб-сайту повторно использовать существующие ответы вместо многократной обработки одного и того же контента для каждого запроса. Это может уменьшить количество запросов к исходному серверу, улучшить время загрузки страниц и обеспечить более быструю работу для посетителей.

Однако многоязычное кэширование должно обеспечивать надлежащее разделение языковых версий. Если система кэширования не различает языковые варианты, посетитель, запрашивающий страницу на французском языке, может получить вместо этого кэшированную версию на английском языке. Аналогично, при обновлении перевода более старый кэшированный ответ может продолжать отображаться до тех пор, пока не истечет срок его действия или он не будет аннулирован.

Кэширование также играет роль в том, как поисковые роботы получают доступ к многоязычным страницам. Каждый языковой URL должен последовательно возвращать соответствующий переведенный контент, чтобы поисковые системы могли правильно понимать и индексировать локализованные версии. Поэтому надежная система кэширования должна работать в сочетании с SEO-сигналами, такими как hreflang, канонические URL-адресаи метаданные, специфичные для конкретного языка.

Как разработать стратегию кэширования для многоязычного веб-сайта

Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент

Эффективная стратегия многоязычного кэширования гарантирует, что посетители будут постоянно получать правильную языковую версию, сохраняя при этом скорость загрузки страниц и сокращая количество запросов к серверу. Первым шагом является определение того, как ваш веб-сайт идентифицирует каждый язык и как система кэширования использует эту информацию. 

Маршрутизация URL-адресов и поддоменов

Использование URL-адресов, специфичных для каждого языка, — один из самых простых способов сделать многоязычное кэширование предсказуемым. Для каждого языка существует свой URL-адрес, поэтому кэш может хранить и предоставлять каждую версию отдельно. Например, example.com/fr/ может представлять французскую версию, а example.com/de/ — немецкую.

Языковые поддомены работают аналогично. Например, веб-сайт может использовать fr.example.com для французского языка и de.example.com для немецкого. Поскольку язык указывается непосредственно в URL, посетители и системы кэширования могут легко определить, какую версию следует отображать. Типичные структуры URL включают:

  • example.com/fr/
  • example.com/de/
  • fr.example.com
  • de.example.com

Определение языка на основе заголовка

Веб-сайты также могут определять предпочтительный язык посетителя с помощью HTTP-заголовков, в частности, заголовка Accept-Language, отправляемого браузером. Например, браузер, настроенный на французский язык, может отправить Accept-Language:fr, что позволит серверу автоматически выбрать французскую версию.

Однако обнаружение на основе заголовков требует тщательной настройки кэша. Если кэш учитывает только URL страницы и игнорирует заголовок языка, он может сохранить одну языковую версию и вернуть её посетителям с другими языковыми предпочтениями. Поэтому ключ кэша или поведение Vary должны учитывать соответствующую языковую информацию. Например:

  • Accept-Language: en
  • Accept-Language: fr
  • Accept-Language: de

Определение языка на основе файлов cookie

Другой подход заключается в сохранении языковых предпочтений посетителя в cookie-файле. После того, как посетитель выберет язык, веб-сайт может сохранить этот выбор и использовать его для последующих запросов. Это может обеспечить более единообразный пользовательский опыт, особенно когда посетители выбирают язык вручную, а не полагаются на настройки своего браузера.

Проблема заключается в том, что файлы cookie могут усложнять кэширование. Если кэш не различает запросы на основе языковых файлов cookie, посетители могут получить кэшированную страницу, предназначенную для другого языка. Поэтому уровень кэширования следует настроить таким образом, чтобы при необходимости изменять или обходить кэширование. Например:

  • language=en
  • language=fr
  • язык=де

Выбор стратегии кэширования

Наилучшая стратегия кэширования зависит от того, как ваш веб-сайт обрабатывает выбор языка. Кэширование на основе языковых маршрутов по URL-адресам обычно проще, поскольку каждый язык имеет уникальный URL-адрес. Обнаружение на основе заголовков и cookie-файлов также может работать, но требует более тщательной настройки для обеспечения правильного разделения кэшированных ответов.

Прежде чем выбирать подход, учтите количество языков, способ выбора языков посетителями и частоту изменений переведенного контента. Цель состоит в том, чтобы определение языка и поведение кэширования работали согласованно, а не позволяли уровню кэширования обрабатывать каждый запрос как одну и ту же страницу. Ключевые факторы, которые следует учитывать:

  • URL-адреса, специфичные для языка
  • Конфигурация ключа кэша
  • Обработка заголовков и cookie-файлов
  • TTL кэша
  • Аннулирование кэша
  • Частота обновления переводов
  • Сканирование поисковыми системами

Как Varnish кэширует многоязычный и переведенный контент

Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент

Varnish Cache работает как обратный прокси между посетителями и исходным сервером. Когда посетитель запрашивает страницу, Varnish проверяет, доступен ли действительный кэшированный ответ. Если он находит соответствующий ответ, он предоставляет кэшированный контент, не отправляя запрос обратно на исходный сервер. Если подходящего ответа нет, Varnish перенаправляет запрос на исходный сервер, получает ответ и может сохранить его для последующих запросов.

Для многоязычных веб-сайтов Varnish необходимо различать запросы, которые должны возвращать разные языковые версии. Поэтому информация о языке должна учитываться Varnish при определении возможности повторного использования кэшированного ответа. Это предотвращает ситуацию, когда кэш обрабатывает разные переводы как один и тот же ответ.

Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент

Ключи кэша, специфичные для языка

Varnish нуждается в способе различения кэшированных ответов, представляющих разные языковые версии. Когда язык уже указан в URL-адресе, каждый URL-адрес может естественным образом соответствовать отдельной записи в кэше. Когда язык определяется заголовком запроса, cookie или другим значением запроса, конфигурация Varnish должна учитывать эту информацию в своей логике кэширования. Например, многоязычный сайт может различать кэшированные ответы, используя:

  • /en/about/ → Запись в кэше на английском языке
  • /fr/about/ → Запись в французском кэше
  • Accept-Language: en → English variation
  • Accept-Language: fr → Французский вариант
  • Языковой cookie → Язык, выбранный посетителем

Точная реализация зависит от того, как веб-сайт определяет язык. Ключевое требование заключается в том, что запросы, приводящие к различным переведенным ответам, не должны обращаться к одному и тому же кэшированному объекту.

Предотвращение межъязыковых совпадений

Кэширование на разных языках происходит, когда Varnish возвращает кэшированный ответ на одном языке посетителю, запрашивающему страницу на другом языке. Например, посетитель, запрашивающий страницу на французском языке, может получить ответ на английском, если оба запроса рассматриваются как один и тот же кэшируемый ресурс.

Чтобы снизить этот риск, Varnish должен повторно использовать кэшированный ответ только в том случае, если языковой вариант известен и соответствует запросу. Если язык определить надежно невозможно, ответ следует обрабатывать с осторожностью, а не сохранять в качестве общей записи кэша. Важные меры предосторожности включают:

  • Избегайте кэширования ответов с неоднозначной языковой информацией
  • Обеспечьте согласованную обработку языковых файлов cookie и заголовков
  • Проверка попаданий и промахов в кэше для запросов на разных языках
  • Проверьте переключение языка после включения кэширования

Аннулирование кэша Varnish

Аннулирование кэша удаляет или помечает кэшированное содержимое как более недействительное. Это важно, когда исходное содержимое или его перевод были обновлены. Без аннулирования Varnish может продолжать предоставлять более старую кэшированную версию до истечения заданного времени жизни (TTL).

Для многоязычных веб-сайтов процедура аннулирования кэша должна учитывать все затронутые языковые версии. Если обновляется английская страница и ее французский перевод, соответствующие кэшированные ответы должны быть очищены или обновлены, чтобы посетители не видели устаревший контент. Распространенные подходы включают:

  • Удаление определенных URL-адресов
  • Удаление версий на нескольких языках
  • Использование TTL кэша
  • Автоматическая очистка после обновления контента
  • Обновление затронутых переведенных страниц

Как Cloudflare кэширует многоязычный контент на периферии сети

Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент

Cloudflare работает как кэширующий слой на границе сети между посетителями и вашим исходным сервером. Когда посетитель запрашивает страницу, Cloudflare проверяет, доступна ли кэшированная версия на границе сети. Если существует действительный ответ, он может быть предоставлен непосредственно с границы сети, а не запрашиваться с исходного сервера. Если кэшированный ответ отсутствует, Cloudflare получает контент с исходного сервера и может кэшировать ответ для последующих запросов.

Для многоязычных веб-сайтов этот процесс должен учитывать запрашиваемый язык. Cloudflare должен уметь различать разные языковые версии, чтобы кэшированный ответ на английском языке не отправлялся пользователю, запрашивающему французскую версию. Это делает настройку кэширования с учетом языка важной, когда переведенный контент доставляется через разные URL-адреса, заголовки или cookie.

Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент

Разделение языковых версий

Cloudflare может кэшировать разные языковые версии отдельно, если каждая версия имеет свой собственный URL. Например, /en/, /fr/ и /it/ могут представлять контент на английском, французском и итальянском языках. Поскольку язык указывается непосредственно в URL, каждая версия может иметь свою собственную запись в кэше, что упрощает управление и очистку отдельных языковых версий. Например:

  • example.com/en/products/
  • example.com/fr/products/
  • example.com/it/products/

Ключи кэша Cloudflare и языковые варианты

Cloudflare необходимо различать запросы, когда ввод на разных языках может приводить к различным ответам. При маршрутизации на основе URL-адресов это разделение происходит естественным образом, поскольку для каждого языка существует свой собственный URL-адрес.

Особое внимание следует уделить вопросам, связанным с языком, определяемым заголовком Accept-Language или cookie-файлом. Если эти значения влияют на перевод ответа, но не обрабатываются конфигурацией кэширования, запросы на разные языки могут рассматриваться как один и тот же ресурс. Это может привести к тому, что посетителям, запрашивающим другой язык, будет предоставлен ресурс на одном языке.

Для большинства многоязычных веб-сайтов маршрутизация на основе URL-адресов проще в управлении, поскольку язык напрямую виден в URL-адресе. Обнаружение на основе заголовков и cookie-файлов также может работать, но требует дополнительной настройки, чтобы гарантировать, что ответы на разных языках не будут передаваться некорректно.

Время жизни кэша (TTL) и очистка кэша

Показатель TTL (Time to Live) кэша определяет, как долго Cloudflare хранит кэшированный ответ до истечения срока его действия. Более длительный TTL может повысить производительность, поскольку контент дольше остается в кэше, в то время как более короткий TTL позволяет быстрее получать доступ к изменениям.

Для многоязычных веб-сайтов значения TTL должны отражать частоту изменений контента и переводов. Для часто обновляемых страниц могут потребоваться более короткие значения TTL, в то время как для стабильных страниц обычно можно использовать более длинные. При изменении перевода следует удалить или обновить соответствующую языковую версию, а не ждать истечения срока действия TTL. Это помогает предотвратить получение посетителями устаревших переводов. Стратегия кэширования может включать в себя:

  • Короткое время жизни (TTL) для часто обновляемого контента
  • Увеличение TTL для стабильных страниц
  • правила кэширования, специфичные для URL-адреса
  • Ручная очистка кэша
  • Автоматическая очистка после обновлений

Рекомендации по кэшированию многоязычных веб-сайтов

Кэширование многоязычных веб-сайтов: как Cloudflare и Varnish обрабатывают переведенный контент

Грамотно спланированная система кэширования может ускорить работу многоязычных веб-сайтов, не допуская при этом получения посетителями неверного или устаревшего перевода. Ключевым моментом является согласованная работа системы перевода и кэширования, при этом необходимо четко разграничивать языковые версии. 

Объедините перевод и кэширование

Перевод и кэширование должны работать вместе как часть одного и того же процесса доставки контента. Слой перевода определяет, какая локализованная версия должна быть возвращена, а слой кэширования сохраняет этот ответ для последующих запросов. Важным моментом является время: язык должен быть определен до того, как ответ будет кэширован. Это гарантирует, что кэш сохранит фактически запрошенный переведенный ответ, а не неоднозначную версию, которая может быть использована для другого языка.

Для веб-сайтов, использующих автоматический перевод, решение для перевода, такое как Linguise может упростить этот процесс, автоматически генерируя локализованный контент и позволяя переведенным страницам работать с существующей системой кэширования веб-сайта. Это может быть полезно для веб-сайтов с несколькими языками, где ручное управление переведенными версиями и их синхронизация с кэшированным контентом могут стать более сложными.

Рекомендация: Перед включением полностраничного кэширования убедитесь, что ваша система перевода и слой кэширования согласовывают способ определения языковых версий.

Преодолеть языковые барьеры
Попрощайтесь с языковыми барьерами и откройте для себя безграничные возможности! Попробуйте наш сервис автоматического перевода уже сегодня.

Используйте ключи кэша, специфичные для конкретного языка

Каждый переведенный ответ должен соответствовать правильному варианту кэша. Языковые структуры на основе URL-адресов упрощают эту задачу, поскольку для каждого языка уже существует свой уникальный URL-адрес, в то время как настройки на основе заголовков или cookie-файлов требуют дополнительной конфигурации кэша.

Рекомендация: По возможности отдавайте предпочтение URL-адресам на конкретном языке, например:

  • /en/about/ → Английский
  • /fr/about/ → Французский
  • /de/about/ → Немецкий

Это обеспечивает четкое разграничение языковых версий и снижает риск попадания в кэш между разными языками.

Установите параметры управления кэшированием и TTL

Заголовки Cache-Control и значения TTL определяют, как браузеры, CDN и обратные прокси-серверы обрабатывают кэшированный контент. Правильная их настройка помогает сбалансировать производительность веб-сайта с необходимостью предоставления актуальных переводов.

Страницы, которые редко меняются, обычно дольше остаются в кэше, в то время как для часто обновляемого контента следует использовать более короткие значения TTL. Правильная настройка зависит от того, как часто обновляется контент и переводы вашего сайта.

Рекомендации: Например, для статической многоязычной целевой страницы можно использовать более длительный срок жизни (TTL), а для страниц товаров или новостей, которые часто меняются, — более короткий. Всегда проверяйте конфигурацию, чтобы убедиться, что обновленный контент становится доступен в ожидаемое время.

Очистка кэша после обновлений

При изменении контента или переводов следует очищать или обновлять кэшированные ответы, содержащие изменения, вместо того чтобы полагаться исключительно на истечение срока действия TTL. Это помогает гарантировать, что посетители получают самую актуальную версию на всех затронутых языках.

Рекомендация: включите аннулирование кэша в процесс обновления контента и убедитесь, что учтены все затронутые языковые версии.

Тестовые кэшированные многоязычные страницы

Тестирование важно, потому что проблемы с кэшированием не всегда видны во время обычного просмотра веб-страниц. Страница может выглядеть корректно при прямом доступе, но возвращать неправильный язык при использовании кэшированного ответа.

Протестируйте каждую языковую версию после настройки или изменения правил кэширования. Проверьте как первый, так и последующие запросы, чтобы убедиться, что постоянно возвращается правильный кэшированный ответ.

Рекомендации по наилучшей практике: Тестируйте сценарии, например:

  • Открытие одной и той же страницы на разных языках
  • Перезагрузка кэшированной страницы
  • Переключение между языками
  • Обновление перевода
  • Проверка страницы после очистки кэша
  • Сканирование URL-адресов на разных языках

Контрольный список многоязычного кэширования

Прежде чем запускать систему многоязычного кэширования в рабочую среду, воспользуйтесь простым контрольным списком, чтобы убедиться, что определение языка, кэширование и обновление контента корректно взаимодействуют друг с другом. 

Контрольный список передовых методов:

  • Присвойте каждой языковой версии уникальный URL-адрес или вариант кэширования
  • Используйте ключи кэша, специфичные для конкретного языка
  • Настройте соответствующие заголовки Cache-Control
  • Установите значения TTL в зависимости от частоты обновления контента
  • После обновлений удалите затронутые языковые версии
  • Протестируйте кэшированные страницы на всех поддерживаемых языках
  • Проверьте наличие ответов на неправильном языке
  • Проверьте наличие устаревшего переведенного контента
  • Проверьте URL-адреса, адаптированные под конкретный язык, с помощью поисковых роботов
Готовы исследовать новые рынки? Попробуйте наш автоматический сервис перевода бесплатно с нашим 1-месячным безрисковым испытанием. Кредитная карта не требуется!

Заключение

Для эффективного кэширования многоязычных веб-сайтов необходим баланс между производительностью сайта и предоставлением каждому посетителю правильной, актуальной языковой версии. Использование ключей кэша для каждого языка, соответствующих значений TTL и надежной аннулирования кэша позволяет сократить количество запросов к серверу, предотвращая при этом появление контента на неправильном языке и устаревшего контента.

Для более простого управления переведенным контентом зарегистрируйтесь в Linguise и оптимизируйте рабочий процесс вашего многоязычного веб-сайта с помощью автоматического перевода, сохраняя при этом быстрый и удобный в управлении локализованный контент

Вас также может заинтересовать чтение

Не упустите возможность!
Подпишитесь на нашу рассылку

Получайте новости об автоматическом переводе веб-сайтов, международной SEO и многом другом!

Invalid email address
Give it a try. One per month, and you can unsubscribe at any time.

Не уходите без обмена вашим email!

Мы не можем гарантировать, что вы выиграете в лотерее, но мы можем обещать интересные информационные новости вокруг перевода и периодические скидки.

Не упустите возможность!
Invalid email address