Ruby - 如何在Rails中过期后刷新Fragment缓存

时间:2015-01-28 15:15:34

标签: ruby-on-rails ruby caching memcached cache-expiration

我有一个Ruby on Rails应用程序,其中使用片段缓存并使用memcached存储数据。此外,我还有一个清除程序,当对模型进行更改时,缓存会使缓存失效。

index.html.erb

<% cache 'recent_albums' do %>
contents to be cached
<%end %>


class AlbumsSweeper < ActionController::Caching::Sweeper
  observe Album

  def after_save(album)
    expire_cache(album)
  end

  def after_destroy(album)
    expire_cache(album)
  end

  def expire_cache(album)
    expire_fragment 'recent_albums'
  end

end

我有一个要求,在用户点击“相册”页面之前,需要使用新数据刷新过期的片段。            有人可以帮助解决片段缓存数据刷新的实现方式吗?

1 个答案:

答案 0 :(得分:0)

缓存的整个概念是&#34;做某事并在下次记住它&#34;。

如果我理解你的问题是正确的;你正在尝试做别的事情,即&#34;总有一些东西准备好什么东西运行&#34; ---所以你应该使用别的东西。

Memcached支持存储key:value数据对 - 所以如果你想要总是做好准备并且&#34;预烘烤&#34;您可以跳过使用缓存,而只是将键:值存储到Memcached。然后在after_save和after_destroy等上更新它。

除此之外 - 片段缓存在访问时自动更新,而不是在缓存中。