问题标签 [rack-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
327 浏览

ruby-on-rails - 为来自 CDN 的请求绕过 Rack::Cache

我有一个 Rails 3.2 应用程序,部署到 heroku。我将缓存与Rack::Cache和 Amazon CloudFront 一起使用。

对于通过 CloudFront 提供的请求(主要是资产),带有 Rack::Cache 的缓存层是多余的,我宁愿不在那里使用它(heroku 上的 memcached 很昂贵

为这些请求跳过 Rack::Cache 的好方法是什么?

0 投票
0 回答
463 浏览

ruby-on-rails - 机架缓存:“陈旧、有效、存储”

我在我的 rails 应用程序中使用了页面缓存解决方案以及 expire_at 语句。

我的页面可以使用 1 小时,然后需要重做。

出于某种原因,当我的 Rails 服务器开始“新鲜”提供服务的第一个小时,然后当它变成样式时,之后的每个请求都被提供“陈旧、有效、存储”......存储意味着它进入我的应用服务器并尝试获取新副本。

我在 Heroku 上,使用 unicorn 和 rack-cache 以及用于元存储的 memcached 和用于实体存储的文件支持缓存。

任何想法为什么会发生?

在我本地的 comp/dev 机器上,它没有表现出相同的症状。当页面变得陈旧时,第一个请求被“陈旧、有效、存储”提供服务,随后的请求得到“新鲜”服务,直到一个小时过去后它再次陈旧。

0 投票
0 回答
126 浏览

ruby-on-rails - Rack::Cache 在更改 etag 后没有破坏缓存

我已设置 Rack::Cache 以与我的 rails 应用程序、heroku、Dalli 和 memcachd 一起使用。一切都按预期工作,但是当我在网站后端更新内容时,缓存仍然是新鲜的。etag 已更改,但这似乎并未破坏 Rack::Cache。我如何告诉 Rack::Cache 破坏内容更新?

0 投票
0 回答
200 浏览

ruby-on-rails - Rack::Cache 和页面缓存的区别

我们目前正在更新我们的网站,我负责选择/设计我们的缓存策略。

我们的网站都是基于文章的杂志网站,但其中一些网站有一个用户系统,用于需要订阅的受限文章。

到目前为止,我们已经使用了一些 javascript 的页面缓存(并将页面存储在 memcached 中)。但是我认为 Rack::Cache 或者 Varnish 现在是一个更好的解决方案。据我所知,它在性能方面的工作方式几乎相同:

  • 页面缓存,将整个页面缓存在 memcached 中,此缓存将在未来请求时由 nginx 直接从 memcached 提供。
  • Rack::Cache,也将整个页面缓存在 memcached 中,因为缓存的版本是由网络服务器而不是 nginx 提供的。Rack::Cache 使用 HTTP 缓存标头,这意味着访问者还将在浏览器中存储本地缓存。此外,用同样使用 HTTP 缓存标头的 Varnish 替换它是否容易。

到目前为止我是对的,还有其他人对这两种策略的差异或表现有一些评论吗?也可以同时使用两者,但我可以看到这种方法的任何优势,因为它们将缓存相同类型的页面。

0 投票
2 回答
367 浏览

ruby-on-rails - 带有 Rails + Rack::Cache 的 HTTP 缓存不会失效

我的 Rails 3 应用程序生成的页面将在指定的时间段内发生变化,然后在其剩余生命周期内保持静态(无变化)(想想:体育记分牌)

这似乎是全页缓存的绝佳机会,因此我选择了 Rack::Cache,使用响应的 Last-Modified 部分来指示缓存何时无效。

缓存工作得很好——太好了。似乎即使 Last-Modified 字段更新的日期/时间晚于请求的 If-Modified-Since 字段并且响应生成状态 200(而不是 304),浏览器仍会加载缓存在服务器上的页面版本。

这是我在服务器调试日志中看到的:

这是一个示例请求/响应(请参阅 200 状态):

在相关控制器中,我对给定操作使用 before_filter,在该过滤器中,我在页面上最后更新的对象上使用 fresh_when。这似乎在响应中生成了正确的日期/时间,但我包含了任何可能错误的代码(为简洁起见,我删除了 show 操作):

0 投票
1 回答
36 浏览

ruby-on-rails - Rails:缓存有替代品?

我有一部分正在缓存,但其中一部分是动态的:

并想把它变成这样的东西:

是否有一些宝石或方法可以做到这一点?

更新:

请不要建议以任何方式赚钱作为关键的一部分,这就是我们现在正在做的事情。

0 投票
0 回答
663 浏览

ruby-on-rails - 我的 Rack::Cache 配置错误吗?

我正在使用HTTP 缓存和 etags 缓存我的 Rails 应用程序上访问次数最多的页面。

这依赖于 Rack::Cache,我最近发现我没有在我的配置文件或初始化程序的任何地方显式设置 Rack::Cache 的存储配置(具体来说,我在config.action_dispatch.rack_cache任何地方都没有代码,如所讨论的在这个 Heroku 指南中)。

我的 HTTP 缓存实现似乎正在工作,即如果页面未修改,注销的用户将返回页面并返回 304 Not Modified 响应。

我从我的服务器(在开发、登台和生产中)启动了一个 Rails 控制台,运行MyApp::Application.config.action_dispatch.rack_cache,它返回的是:

=> {:metastore=>"rails:/", :entitystore=>"rails:/", :verbose=>false}

我只遇到过 memcache、file:/heap:/metastore 和 entitystore 的选项。从来没有——这里rails:/没有提到它。

我的 Rack::Cache 配置错误吗?是什么rails:/意思?

0 投票
1 回答
214 浏览

ruby - 机架缓存有问题的缓存

我正在尝试根据此处显示的示例在本地缓存来自服务器的响应。

不知何故,我总是错过作为回应,文件夹是空的。我猜缓存对我不起作用。我究竟做错了什么?

更新

响应标头包含:

所以我想我的问题是如何在处理响应之前拦截响应并修改响应头字段?

0 投票
2 回答
183 浏览

ruby-on-rails - 使机架缓存中的单个密钥无效?

假设我的 Rails 应用程序上的一条路径卡在了机架缓存中。有没有办法说:“/games/zelda”应该从机架缓存中删除/失效?