1. 强缓存( 200fromcache)时,浏览器如果判断本地缓存未过期,就直接使用,无需发起http请求。
    协商缓存( 304)时,浏览器会向服务端发起http请求,然后服务端告诉浏览器文件未改变,让浏览器使用本地缓存。
  2. 对于协商缓存,使用 Ctrl+F5强制刷新可以使得缓存无效。但是对于强缓存,在未过期时,必须更新资源路径才能发起新的请求(更改了路径相当于是另一个资源了,这也是前端工程化中常用到的技巧)。
  • 上述提到了强缓存和协商缓存,那它们是怎么区分的呢?答案是通过不同的http头部控制。

先看下这几个头部:

If

None

Match
/
E

  • tag

    If
  • Modified
  • Since
    /
    Last
  • Modified

    Cache
  • Control
    /
    Max
  • Age

    Pragma
    /
    Expires
    这些就是缓存中常用到的头部,这里不展开。仅列举下大致使用。

属于强缓存控制的:


http1
.
1

Cache

  • Control
    /
    Max
  • Age

    http1
    .
    0

    Pragma
    /
    Expires
    注意: Max-Age不是一个头部,它是 Cache-Control头部的值。

属于协商缓存控制的:


http1
.
1

If

  • None
  • Match
    /
    E
  • tag

    http1
    .
    0

    If
  • Modified
  • Since
    /
    Last
  • Modified
    可以看到,上述有提到 http1.1和 http1.0,这些不同的头部是属于不同http时期的。

再提一点,其实HTML页面中也有一个meta标签可以控制缓存方案- Pragma。

不过,这种方案还是比较少用到,因为支持情况不佳,譬如缓存代理服务器肯定不支持,所以不推荐。

最新文章

  1. ZooKeerper学习之Watcher
  2. 你可能不知道的7个CSS单位
  3. hdu 2896 AC自动机
  4. [LintCode] Valid Parentheses 验证括号
  5. EasyUI——实现展示后台数据代码
  6. jQ的一些常识
  7. C#设计模式之十三代理模式(Proxy)【结构型】
  8. hadoop2.7.3+spark2.1.0+scala2.12.1环境搭建(4)SPARK 安装
  9. vue中路由按需加载的几种方式
  10. requirejs的使用和快速理解
  11. Maven解决NoPluginFoundForPrefixException错误
  12. shell 中的单行注释和多行注释
  13. 2018-6-20-随笔-SQL Server中乱码
  14. MySQL--3约束和修改数据表总结
  15. POJ 2373 Dividing the Path(DP + 单调队列)
  16. 来自官方的一些dbt 最佳实践
  17. 菜鸟vimer成长记——第2.1章、normal模式
  18. pip3
  19. Java MySQL(SqlHelper)
  20. Linux 安装Redis<准备>(使用Mac远程访问)

热门文章

  1. softmax与多分类
  2. POJ - 2635 E - The Embarrassed Cryptographer
  3. YLZ开发外网前端
  4. fread 不能读取最后一个数据块
  5. Python 静态方法
  6. Python 实例方法
  7. 使用Redis做为MySQL的缓存
  8. HDU 6124 17多校7 Euler theorem(简单思维题)
  9. 2.3 xpath定位
  10. 【转载】 从ACM会议看中国大陆计算机科学与国外的差距