etag 实体标签 怎么配置? 给个例子/代码 好吗?
1、先说ETag是什么:
在典型用法中,当一个URL被请求,Web服务器会返回资源和其相应的ETag值,它会被放置在HTTP的“ETag”字段中:
ETag: "686897696a7c876b7e"
然后,客户端可以决定是否缓存这个资源和它的ETag。以后,如果客户端想再次请求相同的URL,将会发送一个包含已保存的ETag和“If-None-Match”字段的请求。
If-None-Match: "686897696a7c876b7e"
客户端请求之后,服务器可能会比较客户端的ETag和当前版本资源的ETag。如果ETag值匹配,这就意味着资源没有改变,服务器便会发送回一个极短的响应,包含HTTP “304 未修改”的状态。304状态告诉客户端,它的缓存版本是最新的,并应该使用它。
然而,如果ETag的值不匹配,这就意味着资源很可能发生了变化,那么,一个完整的响应就会被返回,包括资源的内容,就好像ETag没有被使用。这种情况下,客户端可以用新返回的资源和新的ETag替代先前的缓存版本。
--摘自维基百科HTTP ETAG
如图,这是打开百度首页的所有请求。服务器响应头里面包含了一个ETag标签,相当于这个图片的“身份证号”。由于我刷新了一次,浏览器第二次请求这个图片,请求头里面包含If-None-Match标签,里面是之前收到的ETag,
2、再说Etag怎么启用:
上面可以看出ETag在服务器的响应头先出现,那么和HTML也没关系了。需要在服务器端相关软件进行配置。网上教程很多。我就不一一搬运了。以下是三个常用服务器端开启ETag的说明:
IIS http://www.t086.com/article/5210
Apache http://www.t086.com/article/5209
Nginx http://www.t086.com/article/5207