我对Rails 2.3.4应用程序有一个奇怪的问题。 expires_in时间设置为每小时后10秒。但即使在缓存刷新后,memcache似乎也记住了这个值。
caches_action :deals, :expires_in => (3600 - Time.now.to_i % 3600) + 10,
:cache_path => Proc.new { |controller| "blah" }
Memcache输出:
<8 new client connection
<8 get mynamespace:views/show
>8 END
<8 set mynamespace:views/show 0 1457 20499
>8 STORED
<9 new client connection
<9 flush_all
>9 OK
<9 connection closed.
<8 get mynamespace:views/show
>8 END
<8 set mynamespace:views/show 0 1457 20499
>8 STORED
答案 0 :(得分:1)
尝试将expires_in
值放在proc。
编辑:我忘了提到最后用.call
调用proc。
答案 1 :(得分:1)
确保您实际上使用 memcached,而不是rails默认缓存机制。你的环境中应该有这样的东西.rb:
config.cache_store = :mem_cache_store
我在尝试使用缓存时遇到了类似的问题:expires_in我没有意识到上面的内容是必需的。如果没有它,rails默认使用FileStore或MemoryStore,两者都会很高兴地坐在缓存中,但忽略:expires_in选项。
感谢this article on memcached basics by Rob Anderton帮助我最终解决这个问题