我正在使用Rails动作缓存内存存储:
# controller
class ProductController < ApplicationController
caches_action :index
def index
end
end
# product sweeper
class ProductSweeper < ActionController::Caching::Sweeper
observe Product
def after_create(record)
Rails.logger.info "expiring"
expire_action :products, :index
end
end
# application.rb
config.active_record.observers = :product_sweeper
config.cache_store = :memory_store
当我在开发控制台中查看show动作时,操作会按预期缓存。
当我启动一个开发控制台,并创建一个新产品时,我看到了清扫器/观察者after_create fire。但是缓存未过期。
我认为这是因为Rails内存缓存不是在进程之间全局共享的?由于我计划在后台创建新产品(定期在cron中运行),这是可能的,还是需要从内存存储更改为另一种缓存策略?