Respone Headers 中 Etag

作者:ntop

链接:https://www.jianshu.com/p/a3ea9619c38d

来源:简书(只复制了作者部分的原文)

 

ETag 是 Entity Tag 的缩写,中文译过来就是实体标签的意思。在HTTP1.1协议中其实就是请求HEAD中的一个属性而已。

ETag是HTTP1.1中才加入的一个属性,用来帮助服务器控制Web端的缓存验证。它的原理是这样的,当浏览器请求服务器的某项资源(A)时, 服务器根据A算出一个哈希值(3f80f-1b6-3e1cb03b)并通过 ETag 返回给浏览器,浏览器把"3f80f-1b6-3e1cb03b" 和 A 同时缓存在本地,当下次再次向服务器请求A时,会通过类似 If-None-Match: "3f80f-1b6-3e1cb03b" 的请求头把ETag发送给服务器,服务器再次计算A的哈希值并和浏览器返回的值做比较,如果发现A发生了变化就把A返回给浏览器(200),如果发现A没有变化就给浏览器返回一个304未修改。这样通过控制浏览器端的缓存,可以节省服务器的带宽,因为服务器不需要每次都把全量数据返回给客户端。

注:HTTP中并没有指定如何生成ETag,哈希是比较理想的选择。

通常情况下,ETag更类似于资源指纹(fingerprints),如果资源发生变化了就会生成一个新的指纹,这样可以快速的比较资源的变化。在服务器端实现中,很多情况下并不会用哈希来计算ETag,这会严重浪费服务器端资源,很多网站默认是禁用ETag的。有些情况下,可以把ETag退化,比如通过资源的版本或者修改时间来生成ETag。

如果通过资源修改时间来生成ETag,那么效果和HTTP协议里面的另外一个控制属性(Last-Modified)就雷同了,使用 Last-Modified 的问题在于它的精度在秒(s)的级别,比较适合不太敏感的静态资源。

 

 

HTTP Headers是在HTTP请求和响应传输元数据的一种机制。它们包含一些关于请求或响应的额外信息,例如内容类型、缓存控制、身份验证等。HTTP Headers可以分为几个类别,包括General Headers、Request Headers、Response Headers和Entity Headers。 在HTTP请求,常见的Request Headers包括Accept、User-Agent、Content-Type等。而在HTTP响应,常见的Response Headers包括Content-Type、Cache-Control、ETag等。 此外,HTTP Headers还可以用于处理跨域请求。对于非简单请求,浏览器会发送带有options选项的预检请求,以确定是否允许实际请求。预检请求的Request Headers会包含Access-Control-Request-Method和Access-Control-Request-Headers,以告知服务器请求的方法和头部。服务器则返回相应的Response Headers来指示是否允许实际请求。 总之,HTTP Headers在Web开发起着重要的作用,通过传递额外的元数据,能够使请求和响应更加灵活和可定制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [了解HTTP Headers的方方面面 图文说明](https://download.csdn.net/download/weixin_38622427/12894281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [一文读懂Http Headers为何物(超详细)](https://blog.csdn.net/weixin_34115824/article/details/88586671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值