Rack :: Cache与常规Rails缓存

时间:2011-12-09 22:54:57

标签: ruby-on-rails caching rack

我正在尝试理解Rails中的缓存选项(以及一般的缓存)。

我很难将我的大脑包裹在像Rack :: Cache这样的选项和内置缓存选项(页面,动作,片段)之间。我会使用一个或另一个吗?或者它们是针对不同的东西吗?

感谢有关该主题的任何智慧!

2 个答案:

答案 0 :(得分:3)

来自:http://rtomayko.github.com/rack-cache/faq

  

问:为什么要Rack :: Cache?为什么不使用Rails / Merb / FrameworkX的缓存   系统

     

Rack :: Cache采用基于标准的方法来提供缓存   与框架集成系统相比具有一些优势。它使用标准HTTP   标题(Expires,Cache-Control,Etag,Last-Modified等)来   确定缓存的内容/时间。设计应用程序来支持这些   标准HTTP机制提供了能够切换到的好处   将来不同的HTTP缓存实现。

     

此外,使用基于标准的缓存方法创建了一个   清楚地分离应用程序和缓存逻辑。该   应用程序只需要指定一组基本的信息   移动响应和有关如何以及何时缓存的所有决定   进入缓存层。

因此,如果需要,您可以使用Rails缓存或Rack :: Cache。他们的工作方式不同。使用对你来说有意义的任何东西。

您的决定可能基于想要使用HTTP标准标题(如上面显示的常见问题解答),或者基于您喜欢的语法等等......决定取决于应用和您个人的具体情况口味。

答案 1 :(得分:2)

Rack::Cache将处理HTTP流量级别。

这使Rack::Cache成为rails页面级缓存的合适替代品(虽然我不知道这是否是好主意) - 但它不能用作片段缓存的替代。

如果需要大量处理时间/功能来创建片段,您的片段会在无效之前重复使用几次,您肯定会想要片段缓存。 (通常的缓存权衡。)我可以轻松地对没有片段缓存无用的网站设计进行成像,以及片段缓存不必要的开销。大多数网站都会落在中间位置。

因此,如果您希望使用Rack::Cache,我确信它对它能做的事情非常有用,但它不能取代片段缓存。