我需要查看使用RSS Feed的网站是否有变化。我的解决方案是不断下载整个rss文件,获取entries.length并将其与最后已知的entries.length进行比较。我发现这是一个非常不优雅的解决方案。任何人都可以提出不同的方法吗?
详细信息:
•我的应用程序是一个使用javascript的html文件。它应该足够小,可以用作桌面小工具或浏览器扩展 •目前,它每30秒下载一次rss文件,只是为了获得长度 •它可以从任何带有Rss源的网站下载。
赞赏意见和建议,提前谢谢〜^^
答案 0 :(得分:4)
有HTTP标头可用于确定资源是否已更改。了解如何使用以下标题来提高应用程序的效率。
If-Modified-Since
If-None-Match
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快速查看您的来源是否支持条件获取。 (我希望每个人都这样做。)