0

我在解析 RSS 提要时遇到问题。当我这样做时:

  feed = getFeed("http://example.com/rss)

如果提要内容发生变化,它不会更新。

如果我这样做:

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,如果这有什么不同的话。在我看来,它在某个地方被缓存,但我不知道在哪里。

编辑:Okey 在服务器上运行 1/2 天后它可以正常工作。

4

1 回答 1

2

这:

feed = getFeed("http://example.com/rss?" + Random.rand(20).to_s)

暗示问题出在缓存上,但 Ruby、OpenURI 和 Sinatra 不应该缓存任何东西。也许您的代码在处理传出请求和传入请求的缓存设备或应用程序后面运行?

这不是解决方法,但您的代码可以大大简化:

def getFeed(url)
  open(url).read
end
于 2013-02-23T17:58:43.917 回答