参考:

http://muchstudy.com/2016/08/18/HTTP%E7%BC%93%E5%AD%98%E8%AF%A6%E8%A7%A3/

https://aotu.io/notes/2016/09/22/http-caching/

http://www.cnblogs.com/chenqf/p/6386163.html

一、HTTP缓存

  • 强制缓存
  • 协商缓存(对比缓存)

1、强制缓存

名称 说明
Expires 响应失效的日期和时间。类似于:Expires:Sat, 20 Aug 2016 01:40:57 GMT,绝对值,告诉客户端在这个时间点之后资源过期,需要重新从服务器取。
Cache-Control 类似于:Cache-Control:max-age=315360000,相对值,在多久后过期

通过上面两种方式,当资源的缓存还在有效期时,浏览器直接从本地缓存中取资源,而不是发起HTTP请求从源服务器取。由于客户端与服务器端存在时间差,Expires并不是那么的靠谱,所以建议使用max-age。

2、协商缓存

名称 说明
If-Modified-Since \ Last-Modified 告诉服务器只要服务器在这个时间之后又对资源做了修改则发送该资源
If-None-Match 与 ETag 根据资源内容是否变更来判断是否继续使用本地缓存。第一次请求资源时,服务器在response头信息中设置ETag,当资源过期后再次向服务器请求时用If-None-Match:ETag去验证资源是否变更

静态资源

  • JS

  • CSS

  • 图片

  • 二进制文件

    在文件或者路径中嵌入指纹,避免使用查询字符串。确保生成的URL长度超过8个不通的字符。

    使用这些HTTP响应头:

    1. Cache-Control: public, max- age=31536000
    2. Expires: (一年后的今天)
    3. ETag: (基于内容生成)
    4. Last-Modified: (过去某个时间)
    5. Vary: Accept-Encoding

动态资源

使用如下响应头:

  1. Cache-Control: public, max-age=0
  2. Expires: (当前时间)
  3. ETag: (基于内容生成)
  4. Last-Modified: (过去某个时间)
  5. Vary: Accept-Encoding

二、总结

  • 对于强制缓存,服务器通知浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行比较缓存策略。

  • 对于比较缓存,将缓存信息中的EtagLast-Modified通过请求发送给服务器,由服务器校验,返回304状态码时,浏览器直接使用缓存。

浏览器第一次请求:

enter image description here

浏览器再次请求时:

enter image description here

最新文章

  1. CSS3鼠标滑过动画线条边框特效
  2. 一款开源免费跨浏览器的视频播放器--videojs使用介绍
  3. JDK环境变量设置
  4. urllib2抓取HTML存入Excel
  5. java IO 学习总结
  6. 【转载】让windows使用linux系统的命令
  7. Linq之常见关键字
  8. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
  9. SQL 生成可配置流水号
  10. fsck 修复ext3文件系统(用于linux系统时间不对,文件系统信息有错引起的die with exit status等的一些问题)
  11. Servlet 的基本架构
  12. 12本最优秀的Android开发电子书强力推荐
  13. framework各版本新特性(为面试准备)
  14. javascript01
  15. java实现 redis的发布订阅(简单易懂)
  16. Flask开发微电影网站(二)
  17. orcl数据库命令行怎么导入dmp格式的文件
  18. jeecg自定义按钮使用exp属性不起作用
  19. 【模板】ST表
  20. 使用matplotlib.pylab绘制分段函数

热门文章

  1. Win7 MongoDB可视化工具Robo 3T 1.2.1(robomongo)的安装使用
  2. java中的进制转换
  3. 教你搭建基于typescript的vue项目
  4. 2019-11-29-dotnet-使用-Qpush-快速从电脑到手机推送文字
  5. zabbix 数据库问题
  6. 关于 Google 公司的一些趣闻
  7. win10将mongodb加入系统服务,官方源码报错问题记录
  8. vue笔记(更新中)
  9. u-boot中bss段的使用
  10. 调试dcc 试图将u-boot放入ocm运行碰到的问题