Использование аннулирования кеша для выпуска новой версии веб-сайта не работает.

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

Почему CDN используют кеши

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

Почему инвалидация кеша не работает

Инвалидация кеша на уровне CDN не влияет на браузер пользователя или кэширование интернет-провайдера (ISP). Это означает, что даже если вы сделаете кеш недействительным, вы не сможете узнать, что происходит с точки зрения клиента.

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

Аннулирование предназначено для использования в исключительных обстоятельствах, а не как часть вашего обычного рабочего процесса. Инвалидация не влияет на кэшированные копии в кешах веб-браузера или кешах, управляемых сторонними поставщиками интернет-услуг. - "Google"

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

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

Каковы альтернативы?

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

Истекает

Мы могли бы использовать заголовок expires, чтобы установить время, когда конкретный объект должен быть очищен из кеша. Однако управлять этим заголовком может быть сложно, и у него есть некоторые технические проблемы:

формат времени сложен для разбора, было обнаружено много ошибок реализации, и можно вызвать проблемы, умышленно сдвигая системные часы — Mozilla

Expires: Tue, 28 Feb 2022 22:22:22 GMT

Cache-Control: Max-Age

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

Cache-Control: max-age=86400

Очистка кеша

Если мы хотим использовать кэширование, а также развертывать мгновенные обновления для наших клиентов, мы можем использовать более сложное решение, известное как Cache Busting. Установив уникальный URL-адрес или значение строки запроса для наших кешей запросов, мы будем обрабатывать каждую версию как новый объект. Это означает, что если мы размещаем новые ссылки при каждом изменении и никогда не кэшируем исходный index.html, мы можем загружать новые файлы, не дожидаясь, пока кеш очистит старые.

# Initial link
/css/main.css?1653714985
# New link
/css/main.css?1653715024

Краткое содержание

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

Для получения дополнительной информации следуйте за мной здесь или свяжитесь со мной через:

Больше информации