ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HTTP缓存

2022-04-12 00:02:10  阅读:150  来源: 互联网

标签:Control 缓存 HTTP 请求 Cache 响应 文档


  缓存是一种保存资源副本并在下次请求时直接使用该副本的技术,可以缓解服务器端压力,提升性能(获取资源的耗时更短了)。

 

1.强缓存(文档过期机制)

  

首部

描述

 

Cache-Control:max-age

Max-age值定义了文档的最大使用期——从第一次生成文档到文档不再新鲜为止的最大合法生存时间(以秒为单位)

例 Cache-Control:max-age = 484200

 

Expires

指定了一个绝对的过期日期。如果过期日期已经过了,说明文档不再新鲜。

例 Expires:Fir, 05 Jul 2002, 05:00:00 GMT

 

控制缓存策略:

1.no-store与no-cache

  这两个首部可以防止缓存提供未经证实的已缓存对象。

  • Cache-Control:no-store

    标识为no-store的请求或响应会禁止缓存对客户端请求或服务端响应进行复制,每次客户端发起请求都会向服务器端获取完整的响应内容。

  • Cache-Control:no-cache

    允许缓存但要进行再验证,每当有请求发出,缓存会将该请求发到服务器端,验证该请求所描述的内容在缓存中是否过期。若未过期,才允许缓存使用本地副本回复客户端。

2.private与public

  • Cache-Control:private(默认) —— 表示响应是专用于某个用户的,中间人不能缓存此响应,该响应只能应用于浏览器私有缓存中;
  • Cache-Control:public —— 表示响应是共享的,可以被任何客户端和代理服务器缓存;

3.must-revalidate

  实际上可以配置缓存,使其可以提供一些陈旧(过期)对象给客户端,以提升性能。但如果原始服务器希望缓存严格遵守过期信息,可以在原始响应中附加 Cache-Control:must-revalidate 首部。这样,缓存在没有事先与原始服务器进行再验证的情况下,不能提供这个对象的陈旧副本;若再验证过程中原始服务器不可用,则缓存会返回一条 504 Gateway Timeout错误。 

 

2.协商缓存(服务器再验证机制)

规则:

  • 如果再验证显示内容发生了变化,缓存会回去一份新的文档副本,并将其存储在旧文档的位置上,然后将文档发送给客户端;
  • 如果再验证显示内容没有发生变化,缓存只需要从服务器获取新的首部,包括一个新的过期日期,并对缓存中的首部进行更新。

 

 

 

首部

描述

 

If-Modified-Since:<date>  (弱校验器)

如果从指定日期之后文档被修改,就执行请求的方法(例如GET)来获取携带新首部的新文档。若没被修改则返回 304 Not Modified响应报文(携带新首部但不会返回文档)

 

 

If-None-Match:<tags> (强校验器)

针对那些被周期性重写但内容基本不变的文档,或者所做修改不重要的文档。服务器为文档提供特殊的标签(ETags),只要是上述情况,标签并不会改变。当已缓存标签与服务器标签不一致时才会执行请求的方法,否则仍返回304 Not Modified响应报文

 

 

3.Vary响应头 

  Vary响应头决定了对于后续的请求头,如何判断是请求一个新的资源还是使用缓存的文件。当缓存服务器收到一个请求,只有当前的请求和原始(缓存)的请求头跟缓存的响应头里的Vary都匹配,才能使用缓存的响应。

 

 

 

标签:Control,缓存,HTTP,请求,Cache,响应,文档
来源: https://www.cnblogs.com/evil-shark/p/16133146.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有