开启sitemap的Etag加强sitemap的更新 – 龙剑博客

开启sitemap的Etag加强sitemap的更新

搜索引擎 龙剑博客 90浏览

百度站长中心给我推送了一条消息讲解了Etag对于sitemap的重要性。百度准备大量开放sitemap权限,于是服务器估计吃不消了,所以告诉大家开Etag。在这里给大家分享怎么开启sitemap的Etag标签。

首先先看看百度站长中心推送的消息:sitemap大家非常熟悉,但是如何更好利用sitemap,百度建议您开启Etag。现在我们就来讲讲Etag:

Etag简介

Etag(Entity Tags)是URL的tag,用来标示URL对象是否改变,这样可利用客户端(例如浏览器)的缓存。由服务器首先产生Etag,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。服务器使用它来判断页面是否已经被修改,如果未修改返回304,而不必重新传输整个对象。

sitemap现存弊端

开启sitemap的Etag加强sitemap的更新

1.发现更新不及时

当站点或其sitemap发生更新时,百度难以及时发现并响应,因为百度难以无时无刻地持续检查站点内容和sitemap是否更新。

2.全量抓取,消耗带宽

现在百度对站点sitemap的抓取会将sitemap文件完整下载下来,鉴于sitemap文件一般较大,而这种下载可能存在多次,故比较消耗网站的流量和带宽。

站点启用Etag的好处

1.对sitemap启用ETag后,百度可以更快速地响应sitemap的更新,没有更改内容的情况下,服务器只发回304应答头,对流量的消耗极小,在每个head平均227B大小的通常情形下,一整天24小时每秒都回应的流量消耗仅为18.7M。

2.现在站长平台对每个站点的sitemap主动抓取次数设有上限,且这项功能没有对所有站开放,如果您的站点sitemap启用了ETag,并通过了测试,那么就可以用很小的流量享受百度及时更新您的sitemap的功能,以便于百度更好地收录您网站的内容。

Etag的作用

HTTP1.1用Etag来判断请求的文件是否被修改,主要为了解决Last-Modified无法解决的一些问题:

  1. 一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候并不希望客户端认为这个文件被修改了重新GET;
  2. 某些文件修改非常频繁, 1秒内修改了N次,If-Modified-Since能检查到的粒度是秒级的,这种修改无法判断;
  3. 某些服务器不能精确的得到文件的最后修改时间。

为此,HTTP1.1引入了Etag. 但标准并没有规定Etag的内容是什么或者说要怎么实现,唯一规定的是Etag需要放在双引号内。Etag由服务器端生成,客户端通过If-Match或者说If-None-Match这个条件判断请求来验证资源是否修改。我们常见的是使用If-None-Match.请求一个文件的流程可能如下:

第一次请求:

  1. 客户端发起HTTP GET请求一个文件;
  2. 服务器处理请求,返回文件内容和一堆Header,当然包括Etag(例如”1ec5-502264e2ae4c0″)(假设服务器支持Etag生成和已经开启了Etag). 状态码200,如下图所示,首次请求百度首页时,成功得到百度logo图片文件bd_logo1.png,状态码200,大小8.1KB,返回的Header中包括Etag(“1ec5-502264e2ae4c0”)。

如何给sitemap加上Etag

默认情况下,在sitemap.xml文件中是不包含Etag信息的。如下图,是远方的海的sitemap文件:

开启sitemap的Etag加强sitemap的更新

那么知道了Etag的好处之后,我们就来给sitemap文件加上Etag吧!一般情况下,Etag标签有三个部分组成:

  • INode
  • MTime
  • Size

Etag的各个部分含义说明和添加方法

我找了一下Etag的开启方案,因为一般情况下Etag都是建议关闭的,因为这样可以让网站打开更快。所以开启的活好像没有人去做。首先说明,本文给出的方法在Apache主机下的,因为远方的海使用的是Apache,就没有去找别的主机的方案了。代码都是添加在.htaccess文件中。

一、其中INode部分包含了接入等级,创建时间等信息。如果你想开启INode,在Apache下只需要一行.htaccess代码:

FileETag INode

二、Mtime部分:主要包含了文件最后修改的时间信息。我觉得这个最后修改的信息对于sitemap是非常重要的。开启Mtime信息也只需要一行代码:

FileETag MTime

三、Size部分,Size部分主要的左右是声明这个文件有多大。想要给文件添加Size部分的信息,也是一行代码:

FileETag Size

如果你想一下同时开启Etag的三个部分,则加入(本代码会给网页页面均开启Etag标签):

FileETag INode MTime Size

如果你只想给.xml文件加上Etag,其他文件不做处理的话,可以写成如下:

# Enable XML File Etag by Seavia
<FilesMatch ".(xml)$">
FileETag INode MTime Size
</FilesMatch>

声明:除非标注“龙剑博客”,文章来源于网络,转载仅用于分享,版权归原作者所有。若涉及侵权,请联系QQ:616338334 。提供贵方版权证明后即刻删除。转载请注明:龙剑博客 » 开启sitemap的Etag加强sitemap的更新