HTTP缓存

我们为啥用冰箱

我把浏览器缓存比作一个冰箱,把冰箱里的东西比作缓存文件

  1. 冰箱可以让人不用总去超市,超市就不会挤满人(缓解服务器端压力)
  2. 饿了在冰箱里找吃的不用出门(提升性能(获取资源的耗时更短了))

我们把这个冰箱安排在公司里,那么冰箱里的东西大致分为两种:

  1. 个人的,比如他中午的盒饭(私有缓存只能用于单独用户)
  2. 共有的,比如公司的可乐(共享缓存存储的响应能够被多个用户使用)

食品上的标签会有很多信息,其中最重要的信息之一就是保质期
比如可乐的保质期一般是,一年

可口可乐

我们把可乐的Cache-Control头信息设置成这样(雾),请求从出厂日期算

如果没有Cache-Control头,会通过比较Expires的值和头里面Date属性的值来判断是否缓存还有效,但是这样是很危险的,如果同事把办公室的时间往回拨你就可能喝到过期可乐唷~

整理冰箱

冰箱一直不整理可能会堆满各种东西,我们需要丢掉过期的东西(缓存驱逐),但是不是所有过期的都会丢掉,如果没有新出厂的新可乐,那么行政会继续把这些可乐放在冰箱里充门面(什么?!,对没错就是这么无情)

一个陈旧的资源(缓存副本)是不会直接被清除或忽略的,当客户端发起一个请求时,缓存检索到已有一个对应的陈旧资源(缓存副本),则缓存会先将此请求附加一个If-None-Match头,然后发给目标服务器,以此来检查该资源副本是否是依然还是算新鲜的,若服务器返回了
304 (Not Modified)

则表示此资源副本是新鲜的,不需要更新

你可能感兴趣的:(HTTP缓存)