Это правильно?
Да, Expires и max-age делают одно и то же, но двумя разными способами.То же самое с Last-Modified и Etag
Если да, то должен ли я делать истечение или максимальный возраст?
Истечение срока действия зависит от точности часов пользователя, так что это в основномплохой выбор (так как большинство браузеров поддерживают HTTP / 1.1).Используйте max-age, чтобы сообщить браузеру, что файл хорош в течение такого количества секунд.Например, однодневный кэш будет иметь следующий вид:
Cache-Control: max-age = 86400
Обратите внимание, что при наличии как Cache-Control
, так и Expires
, Cache-Control
имеет приоритет, читать
Если я должен также сделать Last-Modified или ETag, какой из них?Я думаю, что я получил Last-Modified
Вы правы, Last-Modified должно быть лучше.Хотя это время, оно отправлено сервером.Следовательно, нет проблем с часами пользователя.Это причина, почему Last-Modified лучше, чем Expires.Браузер отправляет Last-Modified сервер, отправленный в последний раз, когда он запрашивал файл, и, если он совпадает, сервер отвечает пустым ответом «304 Not Modified»
Кроме того, вы должны отметить, что ETag можетбыть полезным, потому что Last-Modified имеет временное окно в одну секунду.Таким образом, вы не можете различить два разных источника с одинаковым значением Last-Modified.[2]
Etag требуется больше вычислений, чем Last-Modified, поскольку это сигнатура текущего состояния файла (аналогично сумме md5 или CRC32).
Кроме того, в каких файлах я должен включить кэширование в браузере?
Все файлы могут использовать кэширование.У вас есть два разных подхода:
- с max-age: полезно для файлов, которые никогда не меняются (изображения, CSS, javascript).Пока значение максимального возраста, браузер не будет отправлять запросы на сервер.Таким образом, вы увидите, что страница загружается очень быстро при второй загрузке.Если вам необходимо обновить файлы, просто добавьте знак вопроса и дату изменения (например, /image.png?20110602 или для лучшего кэширования прокси-серверов, например, /20110602/image.png или /image.20110602.png).,Таким образом, вы можете сделать так, чтобы срок действия файлов истек, если это срочно (помните, что браузер почти никогда не обращается к серверу, если у него есть файл максимального возраста).Основное использование - ускорить процесс и ограничить количество запросов, отправляемых на сервер.
- с Last-Modified: можно установить для всех файлов (включая файлы с максимальным возрастом).Даже если у вас есть динамические страницы, вы не можете некоторое время изменять содержимое файла (даже если это 10 минут), так что это может быть полезно.Основное использование здесь - это сказать браузеру «продолжайте спрашивать меня об этом файле, если он новый, я вышлю вам новый».Итак, при каждой загрузке страницы отправляется запрос, но ответ пуст, если файл уже исправен (304 Не изменен), поэтому вы экономите на пропускной способности.
Чем больше вы кешируете, тем быстрееваши страницы будут отображаться.Но это сложная задача для очистки кешей, поэтому используйте с осторожностью.
Хорошее место, чтобы узнать все это с множеством объяснений: http://www.mnot.net/cache_docs/
[2]: rfc7232 Etag https://tools.ietf.org/html/rfc7232#section-2.3