1。ETag
ETag是一个字符串相结合的特征对象修改时间对象大小INode等。它是在HTTP 1.1中引入的。与last - modified相比它提供了一个灵活的机制比最新的修改日期。
ETag目前主要用于静态资源如图片、JS和CSS文件。
当用户发送一个HTTP请求时浏览器将使用具有头ETag值发送回服务器。如果ETag匹配它将返回一个304状态码;否则它将返回200和传输HTTP内容。。
一个简单的示意图如下所示:
ETag流程图
注意:ETag是最常用的静态资源如图片、JS和CSS文件。据说ETag也可以用于网页但是我已经观察到一些大型的网站没有使用它原因是不清楚。
3。遇到的问题和方法
3.1精度问题造成集群
inode-size-timestamp ETag的默认格式这也意味着集群中即使对象大小、权限、时间戳、路径都是一样的inode和ETag将是不同的。也就是说对于相同的组件开关从一个到另一个集群ETag会有所不同。
如果有10台服务器的集群中ETag匹配的准确性仅为10%。
3.2解决方案
集群是否有办法解决这个问题吗?答案是肯定的。ETag需要修改。建议删除索引节点使用大小+时间戳或只使用时间戳。
百度官方也给特定的改性方法在Apache和其他服务器。
3.3费用计算
只要有计算将产生额外的成本。然而从百度提供的测试数据CPU利用率将增加1%
3%基本上和吞吐率将保持不变。可以接受的。5。ETag影响SEO
如果ETag配置得当它将极大地增加站点地图的利用率。百度有一个限制活动爬的数量为每个站点。在当前形势下爬虫不能准确区分哪些url是新添加的站点地图和不变导致站点地图利用率低。可能每天爬虫爬行的sitemap文件没有更新了一万年但网站地图新添加的网址还没有爬。
如果使用ETag爬虫将跳过不变sitemap文件直接抓住最近改变了的站点地图可以改善网站地图的利用率。
注意:因为ETag的配置还不在线没有实战数据它将被添加之后。