可以Rails'使用片段缓存而不引用持久对象?

时间:2014-12-03 22:56:30

标签: ruby-on-rails caching transient fragment-caching

我正在处理的项目是 console 样式应用程序,根本无法访问任何持久对象。我们所有的模型都是瞬态对象,可以扩展Hashie::Mash并通过访问各种API调用来实时填充。

我正在研究Rails fragment caching,这些例子暗示片段缓存机制依赖于持久的模型。

我正在寻找不假设持久模型的片段缓存的例子。

1 个答案:

答案 0 :(得分:1)

是的,Rails片段缓存可以缓存任何旧的任意事物。您只需要指定一个键。例如,这个例子来自docs:

<% cache('all_available_products') do %>
  All available products:
<% end %>

你遇到的问题是Rails不会智能地破坏缓存,因为就其而言,内部数据是静态的并且会永久存在。因此,再次从文档中,您必须手动破坏缓存:

expire_fragment('all_available_products')

现在,您的问题的确切解决方案取决于您的用例。如果在API调用响应中有类似的东西,或许类似的话,你可能会破坏缓存。但是,回答你的问题,是的,没有持久模型就可以使用它。