【发布时间】:2014-06-27 17:12:18
【问题描述】:
我正在尝试使用 Dalli 和 memcache 在开发中设置缓存。
我已经安装了 memcached 并且可以从 Rails 控制台访问它”
> Rails.cache.write 'test', 'asdfasdf'
Cache write: test
Dalli::Server#connect 127.0.0.1:11211
=> 360287970189639680
> Rails.cache.read 'test'
Cache read: test
=> "asdfasdf"
我已经安装了 memcachier 和 dalli gems:
gemfile.rb
gem 'dalli'
gem 'memcachier'
我已经更新了 development.rb 以指示缓存激活:
development.rb
config.action_controller.perform_caching = true
config.cache_store = :dalli_store, '127.0.0.1'
但是我似乎仍然无法使片段缓存工作......
但是,如果我使用我的一个视图文件并将内容包装在缓存块中,它似乎不会影响页面呈现:
- cache @page do
%h1 @page.title
%p @page.contents
我不相信这是缓存
如果我检查服务器日志,数据库调用不会减少。我还希望由于缓存键仅依赖于@page 模型,因此对模板的任何更改都不会显示在浏览器中,但它们会显示。如果我更改内容并刷新浏览器,它会立即更新。
我错过了什么,为什么不缓存?
编辑 - 我认为这可能与显式依赖关系有关
在cache digests documentation 中有对无法派生的显式依赖项和模板的引用。我认为这可能是我的问题,控制台显示的消息如下:
18:39:10 web.1 | Couldn't find template for digesting: pages/magazine_header.html
18:39:10 web.1 | Cache digest for magazines/next_previous_nav.html: 5249e7d094aafe2365a097d8ca543dd1
18:39:10 web.1 | Couldn't find template for digesting: layout_partials/layout_partial.html
18:39:10 web.1 | Cache digest for pages/show.html: 314c806fcbb207d41137bc46f0856db0
18:39:10 web.1 | Cache read: views/pages/199-20140614104931344003000/314c806fcbb207d41137bc46f0856db0
18:39:10 web.1 | Read fragment views/pages/199-20140614104931344003000/314c806fcbb207d41137bc46f0856db0 (1.2ms)
18:39:10 web.1 | Rendered pages/show.html.haml within layouts/magazine (8.4ms)
我不能立即确定如何解决这个问题,但会调查...
【问题讨论】:
-
在您的日志中,您是否看到诸如“读取片段视图/...”、“缓存写入:视图/...”、“写入片段视图/...”、“缓存读取”之类的语句: 意见/..."?
-
啊——是的。连同此消息...`找不到用于摘要的模板:pages/magazine_header.html web.1 |杂志/next_previous_nav.html 的缓存摘要:5249e7d094a7d8ca543dd1 web.1 |找不到用于摘要的模板:layout_partials/layout_partial.html web.1 | pages/show.html 的缓存摘要:314c806fcbb207d41137bc46f0856db0 web.1 |缓存读取:views/pages/199-20140614104931344003000/314c806fcbb206f0856db0 web.1 |阅读片段视图/页面/199-20140614104931344003000/314c806f46f0856db0 (1.1ms)` - 关闭谷歌...