网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

什么是HTTP ETag呢?

更新时间:2026年03月27日   作者:spoto   标签(Tag):

ETag:

ETag是一种HTTP头信息,用于Web缓存的验证以及浏览器向资源发送请求时的条件判断。ETag的值是一个标识符,它代表了资源的特定版本。此外,ETag还有助于防止资源同时被更新时导致数据被覆盖的情况。ETag头的示例如下:

ETag: "version1"

注意:ETag头部的数值必须用双引号括起来表示。

ETag的工作原理

  • 服务器收到了针对某个特定资源的HTTP请求。
  • 服务器会生成一份响应结果,并附加一个ETag头信息。例如:ETag:“response_version1”。
  • 服务器会发送包含上述头信息的响应,其中状态代码为200。之后,应用程序会表示出该资源的内容,同时还将资源的副本以及相关的头信息缓存起来。
  • 后来,同一个应用程序再次请求了相同的资源,不过这次的条件请求头是:If-None-Match: “response_version1”。
  • 当服务器收到包含“If-None-Match”头信息的资源请求时,服务器端会比较服务器上当前存储的ETag标识符与请求头中传递的ETag标识符是否一致。
  • 如果请求中的“If-None-Match”与服务器上当前生成的ETag值相同,那么就会返回状态码304(资源未被修改),同时返回的响应体为空。此时,应用程序会使用缓存中的资源副本来处理该请求。
  • 如果请求中的“If-None-Match”值与同一资源当前生成的/分配的ETag值(例如“response_version2”)不一致,那么服务器会将新的内容作为响应返回,同时附带状态代码200。响应中还会包含带有新值的“ETag”头信息。应用程序会使用新的资源,并更新其缓存中的相关数据。

生成 ETag 值

这完全取决于应用程序的设定。它可以被手动创建或更新,也可以自动生成。自动生成的常见方法包括使用资源内容的哈希值,或者仅使用最后一次修改的时间戳的哈希值。生成的哈希值应该没有冲突情况。

ETag值的验证

这只不过是两个数值之间的比较而已。它可以分为两个部分来进行分析。

  1. 强有力的验证/确认
  2. 弱验证
1. 强有力的验证:

这些不同的资源表示方式在细节上完全一致。这就是ETag的默认验证方式,没有使用任何特殊的指令来进行处理。

2. 薄弱的验证:

这两种资源表示方式在语义上是等价的。例如,页面上显示的当前日期,对于更新整个资源来说可能并不重要。

参考文献:
  1. https://en.wikipedia.org/wiki/HTTP_ETag
  2. https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/ETag
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料