你在这里


XML

多语言网站xml sitemap中网址的相互链接

James Qi 2016年2月19日 - 10:10 发布

  2013年8月份写了一篇博文《Drupal网站多语言版的站点地图自动转换》,是修改xmlsitemap.page.inc程序来实现多种语言网站的sitemap,这是多种语言网站提供对应的多种sitemap,博文中提到Google推荐的另外一种办法《通过站点地图指明备选语言网页》(英文版Use a sitemap to indicate alternate language pages, 

修改Drupal的xmlsitemap模块来控制搜索引擎爬取网站地图速度

James Qi 2016年2月2日 - 16:40 发布

  以前托管服务器或者租用的服务器一般都是100M共享的带宽,很少出现机器带宽被占满的情况,去年开始采用阿里云平台后,带宽就是一个不得不考虑的成本因素,我们一般都是每台ECS购买的10M左右带宽,每年费用已经不少了,而投入使用后很轻易就会被占满,关键是网站的流量并没有特别提升,广告收入没有增加,成本却在大幅提高,还导致正常用户访问变慢、困难。

  同事在Linux服务器上安装了一个iftop来查看带宽占用情况,很容易就发现了是搜索引擎的爬虫抓取sitemap.xml这样的网址占用了很大带宽,我们网站系列多、页面多、还有多语言或者手机版,网站地图就特别的多,如果爬虫来得过于频繁就给我们不小困扰。

  但爬虫这种抓取活动还不宜直接屏蔽以免影响收录,所以考虑限制抓取速度的办法,安装了apache的mod_bw模块,还没有调试好,不过在网上搜索到文章说可以用PHP编程来实现控制下载速度,这个对我启发还比较大,因为我们正好修改过Drupal的xmlsitemap模块xmlsitemap.pages.inc文件来改变网站地图中的内容和格式,只要再把输出方式改一点、增加一点sleep循环就可以,代码如下:

Drupal网站用drush生成sitemap.xml以及通过drush.ini修改PHP内存限制

James Qi 2016年1月12日 - 10:51 发布

  我们做的Drupal网站数据量都比较大,几年前一开始就遇到cron运行报错的情况,主要就是因为cron运行期间要生成xmlsitemap,遇到php的内存限制或者运行时间限制导致出错无法正常执行,我们当时采取的办法是修改“Minimum sitemap lifetime(sitemap最小存在时间)”为10年(drush vset xmlsitemap_minimum_lifetime "315360000",并且还要修改modules/xmlsitemap/xmlsitemap.admin.inc中的内容,增加10年这个表单选项),这样10年内让cron碰不到需要重新生成sitemap的情况,从而来禁止cron运行期间生成xmlsitemap(具体见《Drupal网站中不让Cron自动更新Boost_Cache及XML_Sitemap》),这样修改后,cron就可以正常运行。

自由标签:

Drupal网站中不让Cron自动更新Boost Cache及XML Sitemap

James Qi 2011年12月12日 - 22:27 发布

  在一般的Drupal网站中,都是通过设置Cron定期运行来对Boost Cache、XML Sitemap进行更新,但我们在大数据量的Drupal网站中觉得需要进行一些改进。

  首先来说Boost Cache,对于数十万甚至上百万的数据量,如果都进行静态页面缓存的话,占用硬盘过大,小文件太多,可能效率还不如不要静态页面缓存,这样的时候我们一般关闭了详细内容页面的静态缓存,只对分类页(Taxonomy Terms)、索引页(Views)进行缓存,就是这样,静态缓存的文件数也有数万个以上。这时如果通过Cron来定期让静态缓存失效的话,可能会出现删除时间过长而报错的情况,而且这些缓存本身也很可能不需要进行周期性更新,因为这些数据基本上都是长期固定的。

  我现在的做法是将Boost中的设置Clear expired pages on cron runs:为“Disabled”,只有对网站进行过数据大量更新、模板更新等影响很大的操作时,才人工点击“Clear All Boost Cache”按钮来执行更新,而我在点击这个按钮后还可能碰到数据库报错的情况,这时磁盘上的静态文件可能没有被删除,还需要进入Linux服务器系统,用rm -rf /usr/local/apache2/htdocs/.../cache_path/*这样的命令来删除。

订阅 RSS - XML