爱创课堂每日一题第二十四天-ETag应用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爱创课堂每日一题第二十四天-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-Since
和If-None-Match
即检查完修改时间和Etag
之后,
服务器才能返回304.(不要陷入到底使用谁的问题怪圈)
以上是关于爱创课堂每日一题第二十四天-ETag应用?的主要内容,如果未能解决你的问题,请参考以下文章
爱创课堂每日一题第二十三天- Expires和Cache-Control?