0
Posted on 22:04:00 by Unknown and filed under
Google App Engine
最近写了一个 GAE 应用,需要向外提供大量 Feed,很多以前不是问题的问题就出来了:
- 各个在线阅读器的抓取器对网站造成负担,尤其是当 Feed 很多的时候;
- 因为我提供的 Feed 有时效性,但是很多在线阅读器的抓取器不能正确识别 301 重定向和 410 永久删除,这就造成还会始终访问无效的地址;
- 现有的 Feed 托管服务基本都不支持批量托管,比如 Feedburner 和 Feedsky,只有一个 FeedCat 支持,但是就是它的 FeedCatBot 现在还在对我无效的网址进行抓取。
不同的在线阅读器的抓取器也不同:
- Google Reader:一小时一次,User Agent 为 Feedfetcher-Google,我看以前人说它不支持 301,不过据我观察,它会接受 301 重定向,只是用户界面查看 Feed 地址还是原来的。但是 Feedfetcher-Google 不会再去抓取原地址。
- 抓虾:User Agent 为 Zhuaxia.com,支持 301 重定向,不过需要响应 Head 方法。它先用 Head 然后 Get。
- 豆瓣九点:完美支持 301 重定向。
我最后的解决方案是:
- 自己编写了一个批量托管的 GAE 应用,使得原始服务不会受到太大压力,一部分转接到 Feed 托管服务上。
- Feed 托管服务针对实际 Feed 的不同状态返回相应的状态码和转向。
发表评论