ETag应用

简介:

Etag由服务器端生成,客户端通过If-Match或者说If-None-Match这个条件判断请求来验证资源是否修改。常见的是使用If-None-Match。请求一个文件的流程可能如下:

====第一次请求===

1.客户端发起 HTTP GET 请求一个文件;
2.服务器处理请求,返回文件内容和一堆Header,当然包括Etag(例如"2e681a-6-5d044840")(假设服务器支持Etag生成和已经开启了Etag).状态码200

====第二次请求===

客户端发起 HTTP GET 请求一个文件,注意这个时候客户端同时发送一个If-None-Match头,这个头的内容就是第一次请求时服务器返回的Etag:2e681a-6-5d0448402.服务器判断发送过来的Etag和计算出来的Etag匹配,因此If-None-Match为False,不返回200,返回304,客户端继续使用本地缓存;流程很简单,问题是,如果服务器又设置了Cache-Control:max-age和Expires呢,怎么办

答案是同时使用,也就是说在完全匹配If-Modified-SinceIf-None-Match即检查完修改时间和Etag之后,

服务器才能返回304.(不要陷入到底使用谁的问题怪圈)

为什么使用Etag请求头?

Etag 主要为了解决 Last-Modified 无法解决的一些问题。











本文转自 全栈web笔记 51CTO博客,原文链接:http://blog.51cto.com/12864747/1969051,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
缓存
HTTP 请求头Cache-Control 详解
HTTP 请求头Cache-Control 详解
|
3月前
|
JSON 缓存 JavaScript
常见请求头与响应头你了解哪些?
常见请求头与响应头你了解哪些?
|
3月前
|
UED 开发者
HTTP 请求头部的 content-disposition 字段
HTTP 请求头部的 content-disposition 字段
60 0
|
4月前
给requests请求添加cookie
给requests请求添加cookie
45 0
|
5月前
|
API
什么是 HTTP 响应字段里的 Referrer Policy
什么是 HTTP 响应字段里的 Referrer Policy
19 0
|
7月前
|
缓存
HTTP 请求响应头部字段里 ETAG 的用法举例
HTTP 请求响应头部字段里 ETAG 的用法举例
68 1
|
8月前
|
缓存 JSON 前端开发
什么是请求头?常见的请求头有哪些?
请求头(Request Headers)是在HTTP协议中用于传递关于请求的额外信息的部分。它包含了客户端(通常是浏览器或应用程序)与服务器之间进行通信所需的元数据
3491 1
|
缓存 前端开发 Java
常用响应头介绍| 学习笔记
快速学习常用响应头介绍,介绍了 常用响应头介绍系统机制, 以及在实际应用过程中如何使用。
125 0
常用响应头介绍| 学习笔记
|
缓存 算法
ETag
ETag
262 0
ETag
浅谈http缓存使用(Cache-Control、Last-Modified、ETag使用)
浅谈http缓存使用(Cache-Control、Last-Modified、ETag使用)
浅谈http缓存使用(Cache-Control、Last-Modified、ETag使用)