我在解析RSS Feed时遇到问题。 当我这样做时:
feed = getFeed("http://example.com/rss)
如果Feed内容发生变化,则不会更新。
如果我这样做:
feed = getFeed("http://example.com/rss?" + Random.rand(20).to_s)
它大部分时间都有效,但并非总是如此。
getFeed()
的实现方式如下:
def getFeed(url)
rss_content = ""
open(url) do |f|
rss_content = f.read
end
return rss_content
end
我在Sinatra中使用Ruby 1.9.3,如果这有所不同。 在我的意见,它被缓存,但我不知道在哪里。
编辑: 在服务器上运行半天后,它可以解决问题。
答案 0 :(得分:2)
此:
feed = getFeed("http://example.com/rss?" + Random.rand(20).to_s)
暗示问题在于缓存,但Ruby,OpenURI和Sinatra不应该缓存任何东西。也许您的代码在处理传出请求和传入的缓存设备或应用程序后面运行?
这不是解决方法,但您的代码可以大大简化:
def getFeed(url)
open(url).read
end