Sitemap对我们大家来说并不陌生,稍懂SEO的人就知其作用!我们最常用的WordPress也有相应的插件来实现,但我个人觉得我们最常用的Baidu Sitemap Generator、Google XML Sitemaps等等插件生成机制并不是很是很完善!
原因为何?请看下文分解:
因为搜索引擎对sitemap其中的网址数目抓取有一定的限制,记得最早的时候,google对于一个sitemap只可以抓取1000个网址,后来才大幅增加!不管一个sitemap可抓取数量现在具体增加到了多少,但肯定数目的多少对搜索引擎的抓取肯定有影响,既然有影响我们为何不做得更完美一些呢!
并且如果sitemap如果是单个文件的话,量级太大,再加服务器速度太慢,估计没有几分钟是显示不出来的!现在google也将速度指标加入PR里,单个页面不宜过大!
Baidu Sitemap Generator、Google XML Sitemaps等插件全部是采用单文件形式,并且生成机制也有待完善,如果你WP网站文章很少没问题,但当用WP建大型网站时文章数很多,各种问题就随之而来了!!
所以多sitemap机制更有利于搜索引擎快速、顺利的抓取!
何为多sitemap机制? 首先我们生成一个主sitemap(我们用main-sitemap来称呼吧)文件,此文件为sitemapindex类型,其中存放子sitemap文件(我们称之为child-sitemap吧,下同)!child-sitemap文件只用来存放具体文章item. 这里我们假定每个child-sitemap存放网址数为5000个!
我画了一个流程图,我的思路是这样的:
这样我们只需提交一个main-sitemap就可以了,搜索引擎就会通过main-sitemap找到其他所有的child-sitemap文件,并索引之!另外还写了一个方法,就是初始化全站sitemap生成,还一个是删除文章时item条目删除! 这一起加起来就构成了一个完整的sitemap更新机制!
嗯,这就是今天的工作,从流程到实现,搞定!
如果大家还有更好的方法,欢迎拍砖!
PS. 之前有朋友说每次不必那么麻烦,查找 插入删除item,何不直接删除文件重建??这样逻辑更简单! 简单是简单,但是对于大型网站来说,文章数至少是几万级别以上的,如果每更新一篇文章,如果重建一次,服务器肯定承受不住!所以采取逻辑复杂一些,服务器消耗更少!
谢谢博主的文章
[Reply]
话说这个地图还有那么复杂哇
[Reply]
久酷
Reply:
July 21st, 2010 at 09:14
@指舞六弦, 什么事情都不是那么容易滴,哈哈……
[Reply]
好深奥。。
——–
被我说下流的人不多,因为我就很下流。。。
[Reply]
有点意思,是不是类似于主分类与其子分类的意思?main-sitemap中不写入具体的url只包含child-sitemap的url,而具体的url都是按照分类写入child-sitemap中?
[Reply]
久酷
Reply:
July 5th, 2010 at 09:27
@Leo.N, 嗯,就是这个意思,main-sitemap里只存放 sitemapindex child-sitemap才是具体url存放地
[Reply]
大型网站Sitemap,这
个流程图 很不错啊 谢谢
[Reply]
听说可以从sitemap黑站
[Reply]
果然还是wp最最方便
大型站点的我不懂
[Reply]
久酷
Reply:
June 26th, 2010 at 17:27
@A.shun, 站点一大,各种问题都得注意啊
[Reply]
真的很强大
[Reply]
顺便问一句?linode.com是管理型的?看到一句“All managed by our simple yet very powerful control panel. ”使用它提供的面板可以实现完全管理?
[Reply]
久酷
Reply:
June 25th, 2010 at 21:34
@纳粹, 非管理型的,意思是说你有完全而强大的管理后台,可以用来重装所选系统等 等 功能……
[Reply]
纳粹
Reply:
June 25th, 2010 at 21:36
@久酷, 收到。
[Reply]
呃,期待你把思路变成作品。
呵呵。
[Reply]
久酷
Reply:
June 25th, 2010 at 21:18
@纳粹, 功能已经实现了,程序也做好了
[Reply]
纳粹
Reply:
June 25th, 2010 at 21:31
@久酷, 呃?你已经在自己的网站上应用了?貌似我没发现。
[Reply]
久酷
Reply:
June 25th, 2010 at 21:33
@纳粹, 我是用java程序写的,用在大型网站上!
WP博客是用PHP写的,我不是应用在WP上的,HOHO…… 如果有搞PHP的朋友,可以实现之,有了思路实现起来就很简单了!