Я хочу найти минимальный набор заголовков, той работы со "всеми" кэшами и браузерами (также при использовании HTTPS!)
На моем веб-сайте у меня будет три вида ресурсов:
Пример: 0A470E87CC58EE133616F402B5DDFE1C.cache.html (автоматический сгенерированный GWT)
Этим файлам автоматически присваивают новое имя, когда они изменяют содержание (на основе MD5).
Они должны кэшироваться как можно больше, даже когда с помощью HTTPS (таким образом, я принимаю, я должен установить Cache-Control: public
, специально для Firefox?)
Они не должны требовать, чтобы клиент сделал распространение в прямом и обратном направлениях к серверу для проверки, если содержание изменилось.
Примеры: index.html, mymodule.nocache.js
Эти файлы изменяют свое содержание, не изменяя URL, когда новая версия сайта развертывается.
Они могут кэшироваться, но вероятно нуждаться в распространении в прямом и обратном направлениях, которое будет подтверждено каждый раз.
Пример: ответы JSON
У меня есть общее представление, на которых заголовках я, вероятно, использовал бы для каждого типа, но всегда существует что-то, что я мог пропускать.
Я бы, наверное, использовал такие настройки:
Cache-Control: max-age=31556926
- Представления могут быть кэшированы любым кэшем. Кэшированное представление будет считаться свежим в течение 1 года:
Чтобы пометить ответ как "никогда не истекающий", сервер происхождения посылает сообщение Expires дату приблизительно через год после отправки ответа. отправлен. Серверы HTTP/1.1 НЕ ДОЛЖНЫ отправлять Expires даты более чем на один года в будущем.
Cache-Control: no-cache
- Представления разрешено кэшировать любым кэшем. Но кэш должен отправить запрос на проверку оригинальному серверу, прежде чем выпустить кэшированную копию. Cache-Control: no-store
- Кэш не должен кэшировать представление ни при каких условиях. Дополнительную информацию см. в учебнике по кэшированию Марка Ноттингема для получения дополнительной информации.
Случаи один и два на самом деле являются одним и тем же сценарием.
Вы должны установить Cache-Control: public
, а затем сгенерировать URL-адрес, включающий номер сборки / версию сайта, чтобы у вас были неизменяемые ресурсы, которые потенциально могут длиться вечно.
Вы также хотите установить заголовок Expires
через год или более в будущем, чтобы клиенту не нужно было выполнять проверку актуальности.
В случае 3 для максимальной гибкости вы можете выполнить все следующие действия:
"Cache-Control", "no-cache, must-revalidate"
"Expires", 0
"Pragma", "no-cache"