浏览器存储Etag的方式和时间

How and for how long do browsers store Etags?

本文关键字:时间 方式 存储 Etag 浏览器      更新时间:2023-09-26

我希望实现基于ETagcache-control,我想知道ETags在浏览器中存储了多长时间,以及它们是否可以保持比当前会话更长的时间。

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

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

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

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或最大年龄标签指定的持续时间,以及浏览器将保持的时间

etag的唯一目的是让浏览器可以在最初的过期期后发出"如果修改了"请求,看看内容是否真的发生了更改或返回了未修改的304。

管理不善的304可能会导致其他问题,如不必要的和冗余的304请求:http://calendar.perfplanet.com/2010/easy-cache-headers/