Когда отправляется запрос if-none-match?
Оптимизируя поведение кэширования нашего сайта, я заметил, что if-none-match
-запросы отправляются на наш сайт. Насколько я понимаю, кеширование не должно иметь место, пока кеш остается в силе.
Один конкретный запрос генерирует следующее response-header
:
HTTP/1.1 200 OK
Cache-Control: public, max-age=25920000
Transfer-Encoding: chunked
Content-Type: application/javascript; charset=utf-8
Content-Encoding: gzip
Expires: Thu, 04 Feb 2016 17:20:09 GMT
Last-Modified: Mon, 01 Jan 2001 23:00:00 GMT
ETag: W/"0"
Vary: Accept-Encoding
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
Date: Fri, 10 Apr 2015 16:20:09 GMT
Как видите, кеш должен быть действителен в течение 300 дней. Насколько я понимаю, браузер должен использовать свой кэш непосредственно в течение этого периода. Только после того, как этот период закончится, он должен оформить запрос с заголовком if-none-match
, Но браузеры, кажется, игнорируют это и отправляют это if-none-match
-просите каждый раз, когда страница загружается только для того, чтобы получить 304-response ("Not Modified")
,
Что мне нужно изменить, чтобы браузеры не отправляли эти бесполезные запросы?
1 ответ
Да, пока кеш свежий, браузеры должны использовать локальную копию без повторной проверки. Однако это не гарантируется. Например, когда пользователи используют кнопку "Обновить", браузеры все равно отправляют запросы на исходный сервер.
E сть Cache-Control: immutable, max-age=…
расширение, которое сообщает браузерам, что вы действительно имеете в виду, что они должны использовать кэшированный ресурс, не связываясь с сервером.