浏览器存储Etags的方式和时长?

时间:2013-08-23 10:51:25

标签: javascript ajax browser etag

我希望基于ETag cache-control实施,我想知道浏览器中存储的ETags有多长,以及它们是否可以保留的时间超过当前会话。

我有服务器设置并正确发送ETags个响应,我正在使用jQuery.ajax从浏览器发送请求。

如果Not-Modified标头(上一个ETag)与服务器上生成的ETag匹配,则系统正常工作,并使用相应的 304响应进行响应。这一切都适用于当前会话,但是当我关闭浏览器并重新打开它时,jQuery不再发送Not-Modified标头。

我想知道是否有任何方法可以用来触发默认的浏览器行为,并发送Not-Modified标题用于回复(如果适用),没有手动设置标题ajax请求或将ETag存储在localStorage / indexedDb中。

1 个答案:

答案 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/