Ruby on rails 部分缓存过期

Ruby on rails 部分缓存过期,ruby-on-rails,caching,memcached,Ruby On Rails,Caching,Memcached,在我的Rails应用程序中,我使用常规片段缓存,如下所示: - cache "books", skip_digest: true do - @books.each do |book| = book.title = book.author 为了管理缓存过期,我使用了一个清理器: class BookSweeper < ActionController::Caching::Sweeper observe Book def after_update(book)

在我的Rails应用程序中,我使用常规片段缓存,如下所示:

- cache "books", skip_digest: true do
  - @books.each do |book|
    = book.title
    = book.author
为了管理缓存过期,我使用了一个清理器:

class BookSweeper < ActionController::Caching::Sweeper
  observe Book

  def after_update(book)
    expire_fragment "books"
  end    
end
class BookSweeper
假设我有100本书,其中一本被删除或更改。然后图书缓存将过期,第一个站点访问者将体验较慢的页面,因为必须创建新的缓存

有没有办法只更新一本书的缓存,而不是让99本未更改的书的整个缓存过期?或者它只是全部还是一无所有?

来自

您还可以使用活动记录模型作为缓存键:

并在更新(书籍)
方法之后更改

- @books.each do |book|
   - cache "book", skip_digest: true do
    = book.title
    = book.author
def after_update(book)
   expire_fragment "book"
end

不过不确定,只是给出一个想法。

不再需要手动使缓存过期-Rails现在自动实现基于密钥的过期。因此,您可以轻松地为每本书创建一个唯一的缓存,如下所示:

- @books.each do |book|
  - cache book, skip_digest: true do
    = book.title
    = book.author

这将自动为您创建每个缓存并使其过期。不需要任何类型的清理方法。

您使用的是什么版本的Rails?
- @books.each do |book|
  - cache book, skip_digest: true do
    = book.title
    = book.author