Я пытался понять это и искал SO для подобных вопросов, но у меня все еще нет 100% -ного понимания того, как это должно работать.
Я получаю этот ответ по запросу для ресурса изображения:
Response Headers
Server Apache-Coyote/1.1
Date Mon, 19 Oct 2009 09:04:04 GMT
Expires Mon, 19 Oct 2009 09:06:05 GMT
Cache-Control public, max-age=120
Etag image_a70703fb393a60b6da346c112715a0abd54a3236
Content-Disposition inline;filename="binary-216-420"
Content-Type image/jpg;charset=UTF-8
Content-Length 4719
Желаемое поведение заключается в том, что клиент должен кэшировать его в течение 120 секунд, а затем снова запрашивать его с сервера. В течение 120 секунд на сервер не отправляется запрос.
Затем, после 120 секунд, запрос отправляется и принимается ответ 304:
Response Headers
Server Apache-Coyote/1.1
Date Mon, 19 Oct 2009 09:06:13 GMT
Request Headers
Host localhost:8080
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Accept image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language en-us,no;q=0.8,sq;q=0.7,en;q=0.5,sv;q=0.3,nn;q=0.2
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Referer http://localhost:8080/cms/site/0/en/home
Cookie JSESSIONID=768ABBE1A3BFABE3B535900233330650; versionsCssDisplayState=block; iceInfo=iceOn:false,activePortletKey:,icePagePanelX:1722,icePagePanelY:3
If-None-Match image_a70703fb393a60b6da346c112715a0abd54a3236
До сих пор все хорошо. Но тогда, по следующему запросу (в течение 120 секунд), я бы подумал, что ресурс должен быть кэширован за 120 новых секунд. То, что я вижу в браузере (Firefox), с другой стороны, заключается в том, что он с этого момента всегда запрашивает ресурс и получает 304-ответ.
Предполагаю ли я прикреплять заголовки управления кешем в 304-ответе? Из того, что я могу прочитать в спецификации, кажется, что параметры кеш-контроля должны быть опущены и что кэш должен кэшировать его на 120 новых секунд автоматически?