我希望基于ETag
cache-control
实施,我想知道浏览器中存储的ETags
有多长,以及它们是否可以保留的时间超过当前会话。
我有服务器设置并正确发送ETags
个响应,我正在使用jQuery.ajax
从浏览器发送请求。
如果Not-Modified
标头(上一个ETag
)与服务器上生成的ETag
匹配,则系统正常工作,并使用相应的 304响应进行响应。这一切都适用于当前会话,但是当我关闭浏览器并重新打开它时,jQuery不再发送Not-Modified
标头。
我想知道是否有任何方法可以用来触发默认的浏览器行为,并发送Not-Modified
标题用于回复(如果适用),没有手动设置标题ajax请求或将ETag
存储在localStorage
/ indexedDb
中。
答案 0 :(得分:1)
Etag必须附有其他标签,告诉浏览器持有内容的时间
https://developers.google.com/speed/docs/best-practices/caching?csw=1#LeverageBrowserCaching
为所有可缓存资源指定Expires或Cache-Control max-age以及Last-Modified或ETag之一非常重要。指定Expires和Cache-Control:max-age或指定Last-Modified和ETag都是多余的。
所以这一切都取决于您使用Expires或max-age标签指定的持续时间,浏览器将持有它的持续时间
etag的唯一目的是让浏览器在初始到期时间之后发出“if modified”请求,以查看内容是否实际已更改或返回304未修改。
严重管理304可导致其他问题,例如不必要和冗余的304请求:http://calendar.perfplanet.com/2010/easy-cache-headers/