【问题标题】:How do I test if Rack::Cache is functioning with Sinatra app on Heroku with memcache?如何通过 memcache 测试 Rack::Cache 是否在 Heroku 上的 Sinatra 应用程序中运行?
【发布时间】:2013-03-11 02:26:05
【问题描述】:

我正在制作一个网络应用程序,许多用户将在其中查看 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,则不会重新生成内容。我认为浏览器正在缓存结果,但不是 memcache 服务器?我对缓存的工作原理有根本的误解吗?

【问题讨论】:

    标签: ruby caching heroku memcached sinatra


    【解决方案1】:

    对于遇到这个问题的人,这里有一些线程可以帮助您解决问题(帮助了我)。

    “刷新”在您的浏览器中,导致“缓存控制: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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 2016-02-06
      • 2020-10-25
      • 1970-01-01
      相关资源
      最近更新 更多