HTTP缓存

与HTTP缓存有关的首部字段:


image.png

在HTTP1.0时代客户端缓存的方式可以通过pragma和Expires控制

Pragma:

当值设置为no-cache时,客户端不使用缓存。

Expires:

值为一个GMT(格林尼治时间),用来告诉浏览器缓存过期时间,该时间是相对服务器时间而言的,如果客户端和服务器时间不一致则缓存时间可能就会失去作用。

Cache-Control

HTTP1.1时代新增了Cache-Control来解决Expires客户端与服务器时间不一致的问题,一般是用‘max-age=1000’用来表示1000秒之后缓存过期。

以上三个字段优先级顺序为:Pragma->Cache-Control->Expires

  • 上述三种首部字段均能决定客户端是否向服务器发送请求,但是如果缓存到期时服务器端的数据并未被修改过,那么我们依旧要花费带宽和时间来重新获取数据。为让客户端和服务器端实现缓存文件更新验证、提升缓存复用率,HTTP1.1新增了Last-Modified和ETag来解决这件事。

Last-Modified:

服务器将资源传递给客户端时会将资源最后修改时间以‘Last-Modified:GMT’的形式加在实体首部一同发给客户端。客户端再次请求资源时会将该信息一同发给服务器,如果该值与服务器端一致则返回304,内容为空,依旧使用缓存,若与服务器端不一致则发送资源,返回200.但是当资源修改了,但是实际内容没有改变时,服务器仍然会发送资源给客户端。

ETag:

为解决Last-Modified可能存在的不准确的问题,HTTP1.1还推出了ETag首部字段,服务器会通过某种算法给资源得出一个唯一标识符,把资源发给客户端时会将该字段放在实体首部一起发给客户端。客户端下次请求资源时会将该字段一起发送给服务器进行匹配。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • HTTP缓存控制 本文部分内容摘抄其他博客、文章,仅用于学习HTTP缓存控制如有错误,欢迎批评指正 对于Web站点...
    这名字真不对阅读 1,169评论 0 2
  • 深入解析SpringMVC核心原理:从手写简易版MVC框架开始(SmartMvc) : https://githu...
    Herman7z阅读 283评论 0 1
  • title: HTTP缓存技术详解date: 2018-05-21 14:20:06tags: HTTP 缓存ca...
    会飞小超人阅读 6,614评论 2 4
  • 1. 缓存的分类 缓存分为服务端缓存和客户端缓存 服务端缓存又分为代理服务器缓存和反向代理服务器缓存(也叫网关缓存...
    lemonCode阅读 381评论 0 0
  • 每个浏览器都自带了 HTTP 缓存实现功能。您只需要确保每个服务器响应都提供正确的 HTTP 标头指令,以指示浏览...
    _july77阅读 351评论 0 0

友情链接更多精彩内容