Я хочу найти минимальный набор заголовков, который работает "со всеми" кешами и браузерами (также при использовании HTTPS !)
На моем веб-сайте у меня будет три вида ресурсов:
(1) Кэшируемый навсегда (общедоступный / равный для всех пользователей)
Пример: 0A470E87CC58EE133616F402B5DDFE1C.cache.html ( автоматически создается GWT )
Этим файлам автоматически присваивается новое имя при изменении содержимого (на основе MD5).
Они должны как можно больше кэшироваться, даже при использовании HTTPS (так что, я полагаю, я должен установить
Cache-Control: public
, особенно для Firefox?)Они не должны требовать, чтобы клиент совершал обход к серверу и обратно, чтобы проверить, изменилось ли содержимое.
(2) Время от времени меняется (общедоступно / одинаково для всех пользователей)
Примеры: index.html, mymodule.nocache.js.
Эти файлы изменяют свое содержимое без изменения URL-адреса при развертывании новой версии сайта.
Их можно кэшировать, но, вероятно, потребуется повторная проверка каждый раз.
(3) Индивидуально для каждого запроса (частный / индивидуальный)
Пример: ответы в формате JSON
- Эти ресурсы ни в коем случае нельзя кэшировать на диск в незашифрованном виде. (За исключением, может быть, у меня есть несколько конкретных запросов, которые можно было бы кэшировать.)
У меня есть общее представление о том, какие заголовки я, вероятно, использовал бы для каждого типа, но всегда есть что-то, чего мне может не хватать.
источник
Ответы:
Я бы, наверное, использовал следующие настройки:
Cache-Control: max-age=31556926
- Представления могут кэшироваться любым кешем. Кэшированное представление считается свежим в течение 1 года:Cache-Control: no-cache
- Представления могут кэшироваться любым кешем. Но кеши должны отправить запрос на исходный сервер для проверки перед выпуском кэшированной копии.Cache-Control: no-store
- Кеши не должны кэшировать представление ни при каких условиях.См . Учебное пособие Марка Ноттингема по кэшированию для получения дополнительной информации.
источник
Случаи один и два на самом деле представляют собой один и тот же сценарий. Вы должны установить,
Cache-Control: public
а затем сгенерировать URL-адрес, включающий номер сборки / версию сайта, чтобы у вас были неизменные ресурсы, которые потенциально могут длиться вечно. Вы также хотите установитьExpires
заголовок на год или более в будущем, чтобы клиенту не нужно было проверять актуальность.В случае 3 для максимальной гибкости вы можете выполнить все следующие действия:
источник
https://www.example.com/
c) Я хочу, чтобы закладки всегда ссылались на новейшую версию моего сайта (представьте, закладки на вопрос stackoverflow будут содержать номер сборки сайта).