Cache-Control: public, private, no-cache, no-store
Cache-Control: public, private, no-cache, no-store
Cache-Control — это HTTP-заголовок, который управляет тем, как и на сколько долго ресурсы могут кэшироваться браузерами и промежуточными прокси-серверами. Правильное использование этого заголовка может значительно улучшить производительность веб-приложений и снизить нагрузку на серверы.
Ключевые директивы Cache-Control
-
public
- Позволяет кэшировать ресурсы как в браузере клиента, так и на промежуточных кэшах (например, прокси-серверах).
- Применяется для контента, который может быть общедоступным, например, изображения, CSS и JavaScript.
- Пример использования:
Cache-Control: public, max-age=86400 - Это означает, что ресурс может кэшироваться где угодно, и его можно хранить в течение 24 часов.
-
private
- Указывает, что ресурс должен кэшироваться только в браузере клиента, и не должен сохраняться на промежуточных прокси.
- Подходит для персонализированного контента, например, страницы пользователя.
- Пример использования:
Cache-Control: private, max-age=3600 - Здесь ресурс будет кэшироваться только у клиента в течение 1 часа.
-
no-cache
- Запрещает кэширование ресурса, но разрешает хранение его на промежуточных кэшах.
- Каждый раз при запросе клиент должен проверять валидность ресурса на сервере.
- Пример использования:
Cache-Control: no-cache - Это означает, что кэш может хранить ресурс, но перед его использованием обязательно нужно его проверять.
-
no-store
- Строгая директива, запрещающая любое кэширование.
- Ни браузер, ни промежуточные кэши не могут сохранять ресурс.
- Подходит для конфиденциальной информации, например, банковских данных.
- Пример использования:
Cache-Control: no-store - Это означает, что ресурс не должен сохраняться нигде.
Сравнение директив
-
public vs. private
publicпозволяет кэшировать ресурсы везде, тогда какprivateограничивает кэширование только для клиента.
-
no-cache vs. no-store
no-cacheпозволяет временно хранить ресурс, но требует валидации, тогда какno-storeполностью запрещает кэширование.
Практические советы
-
Используйте
max-age- Указание времени кэширования с помощью
max-ageпомогает контролировать, как долго ресурс может оставаться в кэше.
- Указание времени кэширования с помощью
-
Комбинируйте директивы
- Можно комбинировать директивы для достижения нужного поведения. Например,
Cache-Control: private, max-age=3600указывает, что ресурс может кэшироваться только в клиенте в течение 1 часа.
- Можно комбинировать директивы для достижения нужного поведения. Например,
-
Следите за безопасностью
- Для конфиденциальных данных всегда используйте
no-store, чтобы избежать утечек информации.
- Для конфиденциальных данных всегда используйте
Распространённые ошибки
-
Неправильное использование
publicиprivate- Если вы используете
publicдля конфиденциального контента, это может привести к утечке данных.
- Если вы используете
-
Игнорирование кэширования на стороне сервера
- Настройка только на стороне клиента может не дать ожидаемого результата, если сервер не поддерживает нужные заголовки.
-
Забыть про валидацию
- Использование
no-cacheбез соответствующей логики для валидации на сервере может привести к устаревшим данным.
- Использование
Правильное использование заголовка Cache-Control позволяет оптимизировать загрузку ресурсов и улучшить пользовательский опыт.