如何测试Rack :: Cache是​​否与带有memcache的Heroku上的Sinatra应用程序一起运行?

时间:2013-03-21 14:09:51

标签: ruby caching heroku memcached sinatra

我正在制作一个网络应用,其中许多用户将查看Google地图,地图上的更新通过对服务器的ajax请求拉入。我希望缓存发送给用户的响应,因为它涉及从外部服务器抓取数据,并且只需要每2-3分钟更新一次。

因此,只要一个人请求数据,我希望所有其他用户的所有后续请求在接下来的2-3分钟内从缓存中提取。我跟着this tutorial,详细介绍了如何使用Heroku在Sinatra中设置Rack :: Cache和Dalli gem,当我在设置了以下内容的页面上运行测试时,

cache_control :public, max_age: 3000

我可以看到缓存标头正确显示(使用Google Chrome开发者工具),但如果我点击刷新,或者我从另一台计算机请求该页面,则内容显然已重新生成(我输入了Time.now输出) 。但是,如果我转到另一个页面,然后重新键入URL,则不会重新生成内容。我认为浏览器正在缓存结果,而不是内存缓存服务器?我对缓存的工作方式有一个基本的误解吗?

1 个答案:

答案 0 :(得分:0)

对于提出这个问题的人来说,这里有一些线索可以帮助你解决问题(帮助我)。

"刷新"在浏览器中,导致" Cache-Control:max-age = 0": https://groups.google.com/forum/#!topic/rack-cache/sWHyu4pYwKw

清除缓存并删除缓存目录(这对我有用): https://github.com/rails/rails/issues/5245

使用rspec / other为其添加规范 Sinatra, Rack::Test, and Conditional GET requests