HTTP协议缓存机制

缓存相关的请求头

  • Last-Modified
  • Expires
  • Cache-Control
  • ETag

区别与联系

  • Last-Modified

    • 一般存在于静态服务器的HTTP响应头中,由web服务器自动添加

    • 当客户端得到这个响应头,在下次向服务端发起请求的时候,就把Last-Modified头所带的更改时间加到If-Modified-Since头中,发给服务端。服务端收到If-Modified-Since标记,就判断在此时间后文件内容有无发生变化,若无变化,响应 304 Not Modified 。这样做的好处是,节省了网络的传输,因为请求和响应中都没有携带消息体。

  • Expires 使用绝对时间来标记缓存过期的时间(HTTP1.0),如果本地时间和服务器时间不同步,就会影响到缓存服务器的工作,故在HTTP1.1推出了Cache-control。

  • Cache-Control有多种用法:

    • Cache-Control: max-age=3600, public
      • 指定缓存过期的相对时间(秒数),public允许任何人(浏览器,缓存服务器,代理服务器)缓存
    • Cache-Control: no-cache
      • 不缓存
  • ETag

    • 与Last-Modified类似,但是是用一串跟内容相关的编码来标记,如

    ETag: “74177-b46585209c1bc0”

    • 浏览器会在下次请求时,通过类似最后修改时间的方法,在HTTP请求头中附加以下内容来询问服务器该内容是否发生变化:

      If-None-Match: “74177-b46585209c1bc0”

你可能感兴趣的:(HTTP协议缓存机制)