То же самое из wiki: https://ru.wikipedia.org/wiki/HTTP :
Условные GET
Метод GET изменяется на «условный GET», если сообщение запроса включает в себя поле заголовка «If-Modified-Since». В ответ на условный GET, тело запрашиваемого ресурса передается только, если он изменялся после даты, указанной в заголовке «If-Modified-Since». Алгоритм определения этого включает в себя следующие случаи:
Если код статуса ответа на запрос будет отличаться от «200 OK», или дата, указанная в поле заголовка «If-Modified-Since» некорректна, ответ будет идентичен ответу на обычный запрос GET.
Если после указанной даты ресурс изменялся, ответ будет также идентичен ответу на обычный запрос GET.
Если ресурс не изменялся после указанной даты, сервер вернет код статуса «304 Not Modified».
Использование метода условный GET направлено на разгрузку сети, так как он позволяет не передавать по сети избыточную информацию.
Ситуация выглядит несколько иначе:
Адривер предлагает пользователям загрузить новую версию библиотек только в том случае, если они изменились. Гугл же заставляет скачивать заново одно и то же каждый час.
Все современные броузеры в политике кэширования ориентируются в том числе на значение поля «Last-Modified:» из заголовков ответа http сервера. Если сервером для отдаваемого контента не указан «Expires:», то броузер бессрочно кэширует отдаваемый контент и при следующем запросе добавляет в запрос инструкцию «If-Modified-Since:», указав дату, отданную сервером при ответе на первый запрос.
См. строки:
> «Last-Modified: Wed, 26 Nov 2014 11:41:43» GMT в ответе сервера
< "If-Modified-Since: Wed, 26 Nov 2014 11:41:43 GMT" в повторном запросе броузера
Дискуссии пользователя
init, принято. Спасибо за пояснения.
То же самое из wiki:
https://ru.wikipedia.org/wiki/HTTP :
Условные GET
Метод GET изменяется на «условный GET», если сообщение запроса включает в себя поле заголовка «If-Modified-Since». В ответ на условный GET, тело запрашиваемого ресурса передается только, если он изменялся после даты, указанной в заголовке «If-Modified-Since». Алгоритм определения этого включает в себя следующие случаи:
Если код статуса ответа на запрос будет отличаться от «200 OK», или дата, указанная в поле заголовка «If-Modified-Since» некорректна, ответ будет идентичен ответу на обычный запрос GET.
Если после указанной даты ресурс изменялся, ответ будет также идентичен ответу на обычный запрос GET.
Если ресурс не изменялся после указанной даты, сервер вернет код статуса «304 Not Modified».
Использование метода условный GET направлено на разгрузку сети, так как он позволяет не передавать по сети избыточную информацию.
Ситуация выглядит несколько иначе:
Адривер предлагает пользователям загрузить новую версию библиотек только в том случае, если они изменились. Гугл же заставляет скачивать заново одно и то же каждый час.
Все современные броузеры в политике кэширования ориентируются в том числе на значение поля «Last-Modified:» из заголовков ответа http сервера. Если сервером для отдаваемого контента не указан «Expires:», то броузер бессрочно кэширует отдаваемый контент и при следующем запросе добавляет в запрос инструкцию «If-Modified-Since:», указав дату, отданную сервером при ответе на первый запрос.
См. строки:
> «Last-Modified: Wed, 26 Nov 2014 11:41:43» GMT в ответе сервера
< "If-Modified-Since: Wed, 26 Nov 2014 11:41:43 GMT" в повторном запросе броузера
Скучные логи снифера:
=====================
Первый запрос:
GET http://content.adriver.ru/plugins/onScroll.adriver.js HTTP/1.1
Host: content.adriver.ru
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: cid=AXXX242YbFaA3Jd6f1I1LIw;
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Отдается контент:
HTTP/1.1 200 OK
Server: nginx/1.4.5
Date: Tue, 09 Jun 2015 17:55:49 GMT
Content-Type: application/x-javascript
Content-Length: 1152
Last-Modified: Wed, 26 Nov 2014 11:41:43 GMT
Connection: close
ETag: "5475bc77-480"
Accept-Ranges: bytes
/* adriver onScroll plugin */
[skip]
})('onScroll.adriver');
=====================
Повторный запрос:
GET http://content.adriver.ru/plugins/onScroll.adriver.js HTTP/1.1
Host: content.adriver.ru
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: cid=AXXX242YbFaA3Jd6f1I1LIw;
Connection: keep-alive
If-Modified-Since: Wed, 26 Nov 2014 11:41:43 GMT
If-None-Match: "5475bc77-480"
Cache-Control: max-age=0
Контент не отдается:
HTTP/1.1 304 Not Modified
Server: nginx/1.4.5
Date: Tue, 09 Jun 2015 17:57:30 GMT
Last-Modified: Wed, 26 Nov 2014 11:41:43 GMT
Connection: close
ETag: "5475bc77-480"