彻底弄懂HTTP缓存机制及原理.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文档。上传文档
查看更多
彻底弄懂HTTP缓存机制及原理 Expires的值为服务端前往的到期时间,即下一次恳求时,恳求时间小于服务端前往的到期时间,直接使用缓存数据。? 不过Expires 是HTTP 1.0的东西,现在默认扫瞄器均默认使用HTTP 1.1,所以它的作用基本忽视。? 另一个问题是,到期时间是由服务端生成的,但是客户端时间可能跟服务端时间有误差,这就会导致缓存命中的误差。? 所以HTTP 1.1 的版本,使用Cache-Control替代。 Cache-Control Cache-Control 是最重要的规章。常见的取值有private、public、no-cache、max-age,no-store,默认为private。 private: 客户端可以缓存 public: 客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的) max-age=xxx: 缓存的内容将在 xxx 秒后失效 no-cache: 需要使用对比缓存来验证缓存数据(后面引见) no-store: 全部内容都不会缓存,强制缓存,对比缓存都不会触发(对于前端开发来说,缓存越多越好,so…基本上和它说886) 举个例子 图中Cache-Control仅指定了max-age,所以默认为private,缓存时间(365天)? 也就是说,在365天内再次恳求这条数据,都会直接猎取缓存数据库中的数据,直接使用。 对比缓存 对比缓存,顾名思义,需要进行比较推断能否可以使用缓存。? 扫瞄器第一次恳求数据时,服务器会将缓存标识与数据一起前往给客户端,客户端将二者备份至缓存数据库中。? 再次恳求数据时,客户端将备份的缓存标识发送给服务器,服务器依据缓存标识进行推断,推断成功后,前往304形态码,通知客户端比较成功,可以使用缓存数据。 第一次访问: 再次访问: 通过两图的对比,我们可以很清楚的发觉,在对比缓存生效时,形态码为304,并且报文大小和恳求时间大大削减。? 缘由是,服务端在进行标识比较后,只前往header部分,通过形态码通知客户端使用缓存,不再需要将报文主体部分前往给客户端。 对于对比缓存来说,缓存标识的传递是我们着重需要理解的,它在恳求header和响应header间进行传递,? 一共分为两种标识传递,接下来,我们分开引见。 Last-Modified / If-Modified-Since Last-Modified:服务器在响应恳求时,告知扫瞄器资源的最终修改时间。 If-Modified-Since:? 再次恳求服务器时,通过此字段通知服务器上次恳求时,服务器前往的资源最终修改时间。? 服务器收到恳求后发觉有头If-Modified-Since 则与被恳求资源的最终修改时间进行比对。? 若资源的最终修改时间大于If-Modified-Since,说明资源又被改动过,则响应整片资源内容,前往形态码200;? 若资源的最终修改时间小于或等于If-Modified-Since,说明资源无新修改,则响应HTTP 304,告知扫瞄器连续使用所保存的cache。 Etag / If-None-Match(优先级高于Last-Modified / If-Modified-Since) Etag:? 服务器响应恳求时,告知扫瞄器当前资源在服务器的独一标识(生成规章由服务器打算)。? If-None-Match:? 再次恳求服务器时,通过此字段通知服务器客户段缓存数据的独一标识。? 服务器收到恳求后发觉有头If-None-Match 则与被恳求资源的独一标识进行比对,? 不同,说明资源又被改动过,则响应整片资源内容,前往形态码200;? 相同,说明资源无新修改,则响应HTTP 304,告知扫瞄器连续使用所保存的cache。 总结 对于强制缓存,服务器通知扫瞄器一个缓存时间,在缓存时间内,下次恳求,直接用缓存,不在时间内,执行比较缓存策略。? 对于比较缓存,将缓存信息中的Etag和Last-Modified通过恳求发送给服务器,由服务器校验,前往304形态码时,扫瞄器直接使用缓存。 扫瞄器第一次恳求:? 扫瞄器再次恳求时: 文中假如消灭错误,期望小伙伴们可以谅解,更期望可以赐予指正 HTTP缓存相关的概念 http恳求头信息 http响应头信息 恳求头:扫瞄器向服务器发送恳求的数据,资源。? 响应头:服务器向扫瞄器响应数据,告知扫瞄器我是谁,我要你怎样做。如,我是nginx,给你的资源是正确的200 还是错误的404,我要你缓存多久。 常见的恳求头 Accept: text/html,image/* 扫瞄器可以接收的类型 Accept-Cha

文档评论(0)

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

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

1亿VIP精品文档

相关文档