我的缓存生成正在发挥作用。
索引页
http://localhost:3001/produtos
Write fragment views/localhost:3001/produtos (11.0ms)
分页页
http://localhost:3001/produtos/pagina/2
Write fragment views/localhost:3001/produtos/pagina/2 (15.3ms)
但是我很难过期。 我正在使用扫地机来使我的动作缓存失效,而我还没弄清楚如何使分页页面过期。
class ProductsController < ApplicationControlle
caches_action [:show, :index]
end
class Admin::ProductsController < Admin::BaseController
cache_sweeper :product_sweeper
end
class ProductSweeper < ActionController::Caching::Sweeper
observe Product
def after_save(product)
expire_action products_url
expire_action category_product_url(category_id: product.category.slug)
end
end
如何使分页页面过期
http://localhost:3001/produtos/pagina/2
http://localhost:3001/produtos/pagina/3
http://localhost:3001/produtos/pagina/4
...
等等?
答案 0 :(得分:1)
缓存过期很难
如果您真的想担心缓存过期,可以使用以下解决方案:Pagination and page cache sweepers
在Rails 4中处理w / cache过期的推荐方法是使用缓存键,而不用担心缓存过期: How key-based cache expiration works
您可以将Product.maximum(:updated_at)
用作所有产品索引和分页页面的缓存键的一部分。当其中一个产品更新时,更改所有产品索引页面的密钥可能更好,而不是试图猜测哪些页面会受到更改的影响。
如果您允许用户更改每页的记录数,那么它也需要成为缓存键的一部分。