使用RSS提要查看网站中的内容是否发生了变化

时间:2009-12-31 07:30:10

标签: javascript rss

我需要查看使用RSS Feed的网站是否有变化。我的解决方案是不断下载整个rss文件,获取entries.length并将其与最后已知的entries.length进行比较。我发现这是一个非常不优雅的解决方案。任何人都可以提出不同的方法吗?

详细信息:

•我的应用程序是一个使用javascript的html文件。它应该足够小,可以用作桌面小工具或浏览器扩展 •目前,它每30秒下载一次rss文件,只是为了获得长度 •它可以从任何带有Rss源的网站下载。

赞赏意见和建议,提前谢谢〜^^

3 个答案:

答案 0 :(得分:4)

有HTTP标头可用于确定资源是否已更改。了解如何使用以下标题来提高应用程序的效率。

HTTP请求标头

  • If-Modified-Since
  • If-None-Match

HTTP响应标头

  • Last-Modified
  • ETag

基本策略是存储上述第一个请求返回的响应头,然后在未来的请求中发送存储在HTTP请求头中的值。如果HTTP资源尚未更改,您将收到HTTP 304 - Not Modified响应,甚至不会下载资源。因此,这会导致对更新进行非常轻量级的检查。如果资源发生了变化,您将收到HTTP 200 OK响应,并以通常的方式下载资源。

答案 1 :(得分:4)

许多RSS源使用<lastBuildDate>元素(<channel>的子元素)来指示它们上次更新的时间。还有一个<pubDate>元素,<item>的子元素,用于相同的目的。如果您打算阅读ATOM Feed,则会有<updated>元素。

答案 2 :(得分:0)

你应该跟踪GUID的/ ArticleId,看你以前是否看过一篇文章。

您还应该看看您的来源是否支持conditional gets。它允许您检查是否有任何更改,而无需下载整个文件。您可以使用this tool快速查看您的来源是否支持条件获取。 (我希望每个人都这样做。)