Ruby on rails 部分缓存过期
在我的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)
- 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