Задний план: есть веские причины отключить Last-Modified
и ETag
заголовки для некоторых ресурсов веб-сайта: чтобы браузеры не отправляли условные запросы (либо используя If-Modified-Since
или If-None-Match
соответственно). Это хорошо, потому что условные запросы - это просто пустая трата времени для ресурсов, которые имеют номер версии или дайджест в URL-адресе, то есть когда вы взяли на себя обязательство, что URL-адрес всегда будет обслуживать одно и то же тело контента навсегда. В этом случае часто лучше заставить браузер переходить прямо в локальный кеш при повторных посещениях.
Мой вопрос: Я хочу разместить статический веб-сайт с S3 и CloudFront. Это будет довольно мало трафика, и я хочу, чтобы он был быстрым. Но нет очевидного способа предотвратить передачу этих заголовков клиенту - вы не можете отключить их на S3 или настроить CloudFront на их удаление.
Варианты, которые я рассмотрел:
Что еще я могу попробовать?
... когда вы взяли на себя обязательство, что URL всегда будет обслуживать одно и то же тело контента. В этом случае часто лучше заставить браузер переходить прямо в локальный кеш при повторных посещениях.
Браузер (или другой кеш) не будет посещать источник, пока не убедится, что срок действия контента истек. В вашем случае вы могли бы вместо этого отправить соответствующий Cache-Control
или Expires
заголовки, чтобы указать максимально возможное время кеширования. Это единственный способ обеспечить стабильность URL-адреса. Удаление ETag
и Last-Modified
будет увеличивать отправляемые данные, а не уменьшать. Это связано с тем, что без этих заголовков браузер и источник будут вынуждены обновлять весь контент, а не просто выполнять свет повторная валидация.
В случае использования CDN вы можете вместо этого искать тот, который позволит вам переопределить Cache-Control
и Expires
заголовки, которые доставляются конечному пользователю, чтобы указать, что они должны кэшировать контент на неопределенный срок, даже если CDN необходимо повторно проверить его. Так что в ваших интересах, сможет ли CDN повторно проверить контент на основе ETag
и Last-Modified
заголовки, независимо от того, что вы рекламируете конечному клиенту.