我正在开展博客聚合项目。 其中一个主要任务是获取博客的RSS源并处理它们。我目前有大约500个博客,但这个数字会随着时间的推移而稳步增长(很快就会达到数千个)。
目前(仍然是测试版),我有一个cron作业,它每天定期提取所有RSS提要一次。但这会使所有处理和网络IO每天只进行一次。
我应该:
还是有其他想法?
我在共享主机上,因此非常感谢减少CPU和网络IO:)
答案 0 :(得分:2)
我使用了一个系统来调整Feed的更新频率,如this answer中所述。
如果您使用条件HTTP GET来检索支持它的源,则可以节省资源。保留HTTP响应中 Last-Modified 和 ETag 标头的值。在下一次尝试时,在 If-Modified-Since 和 If-None-Match 请求标头中提供它们的值。
现在,如果您收到HTTP 304响应代码,则表示Feed未更改。在这种情况下,还没有再次发送完整的Feed,只有标题告诉您没有新帖子。这减少了带宽和数据处理。
答案 1 :(得分:1)
我有类似的情况,但没有那么多的博客:)我曾经在24小时内导入一次但为了节省CPU负载,我在每个博客之后使用sleep()
,如sleep(10)
;它让我安全。
答案 2 :(得分:1)
我会考虑使用Google App Engine来检索和处理“原始”信息,并将其以可管理大小的数据包发布到Web服务器。 GAE有自己的cron作业系统,可以24/7独立运行。
目前正在使用类似的系统从多个网站检索作业信息,并将其编译为另一个,这是一种很好的方式来抵消带宽和带宽。处理要求也是如此。