我有一个Rails应用程序,其数据库是从外部C ++程序更新的。我想使用片段缓存来加速应用程序,但是当更新记录时,相应的片段缓存条目需要过期。
答案 0 :(得分:1)
如果C ++应用程序直接与数据库对话,您可以将片段缓存与cache_key结合使用。
它很容易并且内置在Rails中。您所要做的就是确保您的C ++应用程序在更新主记录内容时更新记录的updated_at字段。 然后,您可以将片段作用于记录对象,并且当记录更改时,缓存将自动过期。
<% cache [@article, :metadata] do %>
here the content to be cached
for example the <%= @article.title %>.
:metadata is simply a name for this fragment.
<% end %>
假设@article记录已保存在2010-02-10 18:00:00,则片段将缓存在/path/to/cache/.../24-20100210180000
。当您的C ++更新记录并更改updated_at列时,缓存将失效,下一个请求将自动再次访问内容。
有关缓存的更多信息,请查看http://railslab.newrelic.com/scaling-rails