关于http协议的问题

看了一个关于http的文章,对博主关于描述Expires有些疑惑,下面这个截图
如果Expires时间比当前浏览器的请求时间晚,说明缓存未过期,即命中缓存
否则的话就是缓存过期,我不明白的是,
比如浏览器请求了服务器,服务器发过一个Expires:2017-10-11 20:40
再次请求的时候是肯定是比Expires时间晚的,这样不就永远都缓存不了了吗?

clipboard.png

还有这个说两个时间相同,每一次请求返回的时间不都不一样吗?怎么可能是相同的呢?
这个修改时间一致到底指的是什么?

clipboard.png

阅读 2.5k
1 个回答

简单说下吧:

  1. 第一个问题: Expires:2017-10-11 20:40 这个Expires头部是由接口设置的,肯定不会是你请求的当前时间,一般而言会是半年或者一年之类的,这个是要经常修改的,或者是当前时间+半年【一年】之类的缓冲期时间,所以放心吧,一般是会缓存住的,但是这个方式已经不是很合理了,所以有了以下几种

    • Expires
    • Cache-Control
    • Last-Modified/If-Modified-Since:Last-Modified/If-Modified-Since要配合Cache-Control使用。
    • Etag/If-None-Match:Etag/If-None-Match也要配合Cache-Control使用
  2. 第二个问题:这是另外一种缓存机制,是把请求的内容修改时间记录下来,只要请求的内容一直没有修改过,也就是最后修改时间没有变,就可以使用缓存。
    https://segmentfault.com/a/11...
宣传栏