影响cache的几个http头部
来源:互联网 发布:谷歌娘软件下载 编辑:程序博客网 时间:2024/06/03 14:48
1. Last-Modified / If-Modified-Since
客户端请求发出请求,服务端会将 Last-Modified 发给客户端,Last-Modified 表示资源的最后修改时间。
客户端再次请求的时候,会将资源的最后修改时间通过 If-Modified-Since 请求头部,发给服务端,服务端通过这个值判断资源是否已经修改了:
* 如果真的被修改: 那么就开始传输, 服务器返回:200 OK
* 如果没有被修改: 那么就无需传输, 服务器返回: 304 Not Modified.
http方法:HEAD、GET
主要用途:客户端尝试下载最新版本的资源,比如网页刷新、加载图片之类。
2. Last-Modified / If-Unmodified-Since
和上面 If-Modified-Since 类似,也为了服务端判断文件是否被修改:
* 如果没有被修改: 则开始继续传送文件: 服务器返回: 200 OK
* 如果文件被修改: 则不传输, 服务器返回: 412 Precondition failed (预处理错误)
http方法:POST, PUT, DELETE
主要用途:断点续传(一般会指定Range参数)。 要想断点续传,那么文件就一定不能被修改,否则就不是同一个文件了,断点续传就没有意义了。
3. ETag / If-None-Match
Last-Modified / If-Modified-Since 主要缺点就是它只能精确到秒的级别,一旦在一秒的时间里出现了多次修改,那么Last-Modified / If-Modified-Since是无法体现的。
ETag / If-None-Match没有使用时间作为判断标准,而是使用一个特征串。
会把上次服务端响应的特征串作为If-None-Match的值发送给服务端,服务端可以通过这个值来判断是否需要从重新发送,如果不需要,就简单的发送一个304状态码,客户端将从缓存里直接读取所需的Web组件。
http方法:HEAD、GET
主要用途:和 Last-Modified / If-Modified-Since 类似
4. ETag / If-Match
类似 Last-Modified / If-Unmodified-Since,也为了服务端判断文件是否被修改
http方法:POST, PUT, DELETE
主要用途:断点续传(一般会指定Range参数)
5. Expires
Expires是一个时间,比如:Expires: Sun, 16 Oct 2017 05:43:02
。
这是服务端返回给客户端的头部,告诉客户端数据在这个时间之前都是有效的。
6. Cache-Control
Cache-Control: max-age=3600
这里声明的是一个相对的秒数,表示从现在起,3600秒内缓存都是有效的,这样就避免了服务端和客户端时间不一致的问题,但是Cache-Control是HTTP1.1才有的,不适用与HTTP1.0。
ref
http://tech110.blog.51cto.com/438717/549764http://www.cnblogs.com/memset/p/http_if_modified_since.htmlhttp://tech110.blog.51cto.com/438717/549764https://tools.ietf.org/html/rfc7232#section-3.1
- 影响cache的几个http头部
- 影响Cache的几个HTTP头信息
- php知识点3-HTTP 头部-Cache-Control
- HTTP的头部协议
- HTTP协议的头部字段
- 基于HTTP头部的注入
- http的cache
- Http的Cache机制
- Http的Cache机制
- 几个Cache方案的比较
- 影响性能的几个方面
- http头部
- 如何消除CACHE对DMA的影响?
- cache line 对程序性能的影响
- Cache 结构对程序性能的影响
- cpu cache对程序性能的影响
- 最全的HTTP头部信息分析
- 网上流行的http头部解析
- android读取相册加载本地图片制成头像
- SSH2自学逻辑
- 在linux(Ubuntu16.04)上部署使用django的debug模式,部署服务器,供局域网其他电脑访问
- 【二分+上下界网络流】BZOJ2406 矩阵
- 组件间通信
- 影响cache的几个http头部
- 64-bit Tips
- IIFE
- MAC下搭建Android Studio
- golang实现generator
- lingo程序基本框架和逻辑运算符
- (1-2)Unity3D/2D:Sprite Renderer组件详解
- sourcemap
- 快速打造 Android 自定义表情库