远方的海
远方的海,WordPress,免费
2015 Sep 19 02 : 47

开启sitemap的Etag加强sitemap的更新

您当前的位置: 首页 > 建站资源 > SEO > 正文
欢迎光临远方的海!您可能还对 WordPress建站免费资源最新IT动态 感兴趣,点击开启 悦读 模式。CTRL+D 快捷收藏本文,我们期待您再次光临!
[文章目录]

百度站长中心给我推送了一条消息讲解了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>

用别的类型的主机的同学,感兴趣的话也可以找找别的主机如何开启Etag来告诉Sven喔~

好文!分享给朋友,或者点个赞吧~

文章信息

分类:SEO

您可能也会喜欢

发表回复

Post Comment


  1. 南国掌柜博客 :

    博主的主题好给力,另外全面开启etag和只开启sitemap.xml文件的etag有什么区别么?
    我的是阿里云的虚拟主机,操作系统: CentOS 5.4 64位,在站长工具中查询的好像是Apache面板,我是不是只需要在.htaccess文件中加入以下代码就可以了,我是个小白,请求支援!
    # Enable XML File Etag by Seavia

    FileETag INode MTime Size

    2015-9-21
  2. Billy Fu :

    Google XML sitemap插件和你的这种方式生成的sitemap是伪静态的,如果不是纯静态文件,是不支持Etag的。我问过百度了,他们说目前只能生成纯静态的sitamap,一直在找WP的好插件啊。。。

    2015-9-20
  3. Billy Fu :

    用的什么sitemap工具生成的静态文件呢?

    2015-9-20
  4. Sven水神 :

    站长给力的找到了其他主机的修改方案喔:百度官方关于ETAG声明的教程

    2015-9-19