前端浏览器缓存.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前端浏览器缓存

前端浏览器缓存  缓存的概念  缓存这个东西真的是无处不在,有浏览器端的缓存,有服务器端的缓存,有代理服务器的缓存,有ASP.NET页面缓存,对象缓存。数据库也有缓存,等等。  http中具有缓存功能的是浏览器缓存,以及缓存代理服务器。  http缓存的是指:当Web请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。  缓存的好处  缓存的好处是显而易见的,好处有,  1.减少了冗余的数据传输,节省了网费。  2.减少了服务器的负担,大大提高了网站的性能  3.加快了客户端加载网页的速度  如何判断缓存新鲜度  Web服务器通过2种方式来判断浏览器缓存是否是最新的。  第一种,浏览器把缓存文件的最后修改时间通过header”If-Modified-Since“来告诉Web服务器。  第二种,浏览器把缓存文件的ETag,通过headerIf-None-Match,来告诉Web服务器。  通过最后修改时间,来判断缓存新鲜度  1.浏览器客户端想请求一个文档,首先检查本地缓存,发现存在这个文档的缓存,获取缓存中文档的最后修改时间,通过:If-Modified-Since,发送Request给Web服务器。  2.Web服务器收到Request,将服务器的文档修改时间(Last-Modified):跟requestheader中的,If-Modified-Since相比较,如果时间是一样的,说明缓存还是最新的,Web服务器将发送304NotModified给浏览器客户端,告诉客户端直接使用缓存里的版本。如下图。  3.假如该文档已经被更新了。Web服务器将发送该文档的最新版本给浏览器客户端,如下图。  为什么使用ETag呢?主要是为了解决Last-Modified无法解决的一些问题。  1.某些服务器不能精确得到文件的最后修改时间,这样就无法通过最后修改时间来判断文件是否更新了。  2.某些文件的修改非常频繁,在秒以下的时间内进行修改.Last-Modified只能精确到秒。  3.一些文件的最后修改时间改变了,但是内容并未改变。我们不希望客户端认为这个文件修改了。  参考Apache相关文档  条件GET:Last-Modified/If-Modified-Since和ETag/If-None-Match  Last-Modified/If-Modified-Since  Last-Modified是响应头,If-Modified-Since是请求头。Last-Modified把Web组件的最后修改时间告诉客户端,客户端在下次请求此Web组件的时候,会把上次服务端响应的最后修改时间作为If-Modified-Since的值发送给服务器,服务器可以通过这个值来判断是否需要重新发送,如果不需要,就简单的发送一个304状态码,客户端将从缓存里直接读取所需的Web组件。  ETag/If-None-Match  ETag是响应头,If-None-Match是请求头。Last-Modified/If-Modified-Since的主要缺点就是它只能精确到秒的级别,一旦在一秒的时间里出现了多次修改,那么Last-Modified/If-Modified-Since是无法体现的。相比较,ETag/If-None-Match没有使用时间作为判断标准,而是使用一个特征串。Etag把Web组件的特征串告诉客户端,客户端在下次请求此Web组件的时候,会把上次服务端响应的特征串作为If-None-Match的值发送给服务端,服务端可以通过这个值来判断是否需要从重新发送,如果不需要,就简单的发送一个304状态码,客户端将从缓存里直接读取所需的Web组件。  浏览器请求过程  过程如下:  1.客户端请求一个页面(A)。  2.服务器返回页面A,并在给A加上一个Last-Modified/ETag。  3.客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。  4.客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。  5.服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

文档评论(0)

love26072 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档