ICode9

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

http缓存

2022-03-26 21:33:20  阅读:155  来源: 互联网

标签:Control 缓存 Last max Cache Modified http


缓存术语

  • 命中:在缓存中找到数据;
  • 不命中/穿透:在缓存中未找到数据;
  • 命中率:命中次数/总次数;

强缓存

Cache-Control用于在 http 请求和响应中,通过指定指令来实现缓存机制。

可选值

  • 可缓存性:

    • public:所有方可以缓存;
    • private:只有浏览器可以缓存;
    • no-cache:每次必须先询问服务器资源是否已更新(协商缓存);
    • no-store:不使用任何缓存;
  • 缓存期限

    • max-age:秒(存储周期);
    • s-maxage:秒(共享缓存如代理等);

常用组合

# 关闭缓存
Cache-Control: no-store

# 使用协商缓存
Cache-Control: no-cache
Cache-Control: max-age=0

# 使用共享缓存,且缓存时间较长,适用于不经常变动的静态资源
Cache-Control:public, max-age=31536000

相关头部

  • Expires响应头包含日期/时间, 即在此时候之后,响应过期。如果在Cache-Control响应头设置了max-age或者s-max-age指令,那么Expires头会被忽略(该头很少用了)。

协商缓存

  • Last-Modified/If-Modified-Since:基于时间。
    • Last-Modified响应首部,资源做出修改的日期及时间。
    • If-Modified-Since请求首部,上一次Last-Modified值。If-Modified-Since只可以用在GETHEAD请求中。
  • ETag/If-None-Match:基于实体内容生成一段 hash 字符串,http1.1 引入,优先级高于Last-Modified/If-Modified-Since
    • ETag响应首部,这可以让缓存更高效,并节省带宽,因为如果内容没有改变,Web 服务器不需要发送完整的响应。
    • If-None-Match请求首部,上一次ETag值。

有了 Last-Modified 为什么还要 ETag?

  • Last-Modified精确度比ETag要低, Last-Modified基于时间,精度是秒,假如文件在 1 秒之内修改, Last-Modified无法识别;
  • 一些资源内容未变,但最后修改时间改变了,基于时间来说,资源改变了,但基于内容来说,资源未变;
  • 某些服务器无法精准获取文件修改时间。

标签:Control,缓存,Last,max,Cache,Modified,http
来源: https://www.cnblogs.com/mengyuantongxue/p/16060922.html

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

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

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

ICode9版权所有