YSlow не советует удалить ETags в целом, но и для некоторых сред. Если вы не используете ETags, вместо этого вы должны использовать Last-Modified
.
ETag
и Last-Modified
предназначены для условных GET-запросов когда повторно, запрашивающей уже кэшируются и, возможно, истек ресурс.
Cache-Control max-age
для определения срок действия кеш-кода действителен точно, не спрашивая снова. (Когда истек это правило, то браузер сделает условный GET ...)
Так что в вашем случае:
- Browser кэширование ресурса в течение одного года. В течение этого года запрос на этот ресурс вообще не делается. Он напрямую обслуживается из локального кеша. (использует настройки заголовка
Cache-Control
.)
- Браузер выполняет условный запрос после истечения одного года, чтобы проверить, что-то изменилось. Сервер отвечает
HTTP 304
и пустым телом, когда ничего не изменилось. Браузер продолжает использовать свой кешированный элемент в этом случае без необходимости повторной передачи. (Использует параметры заголовка ETag
и/или Last-Modified
)
(браузер может или не может уважать ваши данные. Например, возможно, что браузер будет делать условный запрос, даже если один год не был еще истекло.)
Для сайтов с высокой оптимизацией Cache-Control
гораздо важнее, поскольку вы устанавливаете его в будущих заголовках expa и просто изменяете URL-адрес ресурса в случае его изменения. В то время как это предотвращает использование условных Запросов, это дает вам возможность быть экстремально агрессивным при определении заголовка expires, имея возможность одновременно обслуживать новые версии ресурса всем. Это связано с тем, что новый URL-адрес кажется новым ресурсом в представлении браузера.
Для Java существует инфраструктура под названием jawr, которая использует эти и другие концепции без негативного влияния на разработку вашего сайта.
Хороший ответ, но что более важно здесь. Добавление нескольких байтов в заголовке ответа для каждого запроса, чтобы избежать полной загрузки содержимого через 1 год? Скорее всего, большинство пользователей очистили свой кеш не реже одного раза в год. Даже есть лучший шанс, что сайт не использует те же ресурсы, что и год назад. – Rajiv
На взгляд клиента: Ну, у вас есть эти дополнительные байты только для ** одного ** ответа для ресурса, который будет кэшироваться тогда. Когда кеш браузера истек или он предпочитает обновлять свой кеш раньше, это может быть сделано с условным запросом. Это зависит от ресурса, но очень вероятно, что дополнительные поля заголовка из ** одного ** ответа и ** одного ** условного запроса меньше кэшированного ресурса. И тогда вы выиграли с настройкой ETag или Last-Modified. Я согласен с тем, что имеет смысл отбросить их для небольших ресурсов VEEERY, которые меньше этих двух полей заголовка. –
Когда есть хорошая вероятность, что сайт изменил ресурс в течение максимального времени Cache-Control, тогда он не был настроен должным образом. Максимальный возраст Cache-Control указывает, как долго действителен кешированный ресурс ** **. –