首页 > 其他分享 >讲讲http缓存机制。

讲讲http缓存机制。

时间:2022-10-04 15:55:07浏览次数:64  
标签:返回 缓存 http 请求 讲讲 Modified 服务器 浏览器

缓存分析:

浏览器向服务器发起http请求,服务器响应该请求,在浏览器拿到服务器返回会的数据后,会根据响应报文的http头的缓存标识,决定结果是否缓存,,是则将结果和缓存标识存入浏览器缓存中

浏览器每次请求都会先在浏览器缓存中查找缓存结果和缓存标识

浏览器每次拿到返回结果都会将该结果和缓存标识存入浏览器缓存

缓存过程分为强缓存协商缓存

强缓存就是不向服务器请求数据,而是直接从浏览器缓存中获取数据,如果有,则直接获取,否则还是要向服务器请求

但在获取浏览器缓存之前要判断该缓存是否失效,缓存到期时间存放在expires中;浏览器会将本地时间和该时间对比,判断资源是否过期;但如果我们手动改变电脑时间呢,这就需要cache-control,它的优先级比expires高

cache-control取值有:

  • public:所有内容都将被缓存(客户端和代理服务器都可缓存)
  • private:所有内容只有客户端可以缓存,Cache-Control的默认值
  • no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
  • no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
  • max-age=xxx:缓存内容将在xxx秒后失效
  • s-maxage:代理服务器的资源过期时间
  • immutable:就算过期了也不用协商,资源就是不变的
  • max-stale=xxx:过期了xxx秒内,资源也能用
  • stale-while-revalidate:在验证(协商)期间,返回过期的资源
  • stale-if-error:验证(协商)出错的话,返回过期的资源
  • must-revalidate:不允许过期了还用过期资源,必须等协商结束

控制强制缓存的字段expires和cache-control都是存放在http响应报文的http头中和响应结果一起返回浏览器

协商缓存是在强缓存失效后,浏览器携带缓存标识向服务器请求,由服务器决定是否使用缓存的过程

协商缓存生效,返回304

 

协商缓存失效,返回200和请求结果

 

同样,协商缓存的标识也是在响应报文的HTTP头中和请求结果一起返回给浏览器的,控制协商缓存的字段分别有:Last-Modified / If-Modified-Since和Etag / If-None-Match,其中Etag / If-None-Match的优先级比Last-Modified / If-Modified-Since高。

Last-Modified / If-Modified-Since
Last-Modified是服务器响应请求时,返回该资源文件在服务器最后被修改的时间;

If-Modified-Since则是客户端再次发起该请求时,携带上次请求返回的Last-Modified值,通过此字段值告诉服务器该资源上次请求返回的最后被修改时间。服务器收到该请求,发现请求头含有If-Modified-Since字段,则会根据If-Modified-Since的字段值与该资源在服务器的最后被修改时间做对比,若服务器的资源最后被修改时间大于If-Modified-Since的字段值,则重新返回资源,状态码为200;否则则返回304,代表资源无更新,可继续使用缓存文件。

Etag / If-None-Match
Etag是服务器响应请求时,返回当前资源文件的一个唯一标识(由服务器生成);

If-None-Match是客户端再次发起该请求时,携带上次请求返回的唯一标识Etag值,通过此字段值告诉服务器该资源上次请求返回的唯一标识值。服务器收到该请求后,发现该请求头中含有If-None-Match,则会根据If-None-Match的字段值与该资源在服务器的Etag值做对比,一致则返回304,代表资源无更新,继续使用缓存文件;不一致则重新返回资源文件,状态码为200
总结

强制缓存优先于协商缓存进行,若强制缓存(Expires和Cache-Control)生效则直接使用缓存,若不生效则进行协商缓存(Last-Modified / If-Modified-Since和Etag / If-None-Match),协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效,重新获取请求结果,再存入浏览器缓存中;生效则返回304,继续使用缓存。

 

标签:返回,缓存,http,请求,讲讲,Modified,服务器,浏览器
From: https://www.cnblogs.com/qianduan-Wu/p/16753889.html

相关文章