我在我的 Ruby on Rails 3 应用程序中使用 Memcached。它适用于动作和片段缓存,但是当我尝试使用页面缓存时,页面存储在文件系统中而不是 Memcached 中。如何让 Rails 也使用 Memcached 进行页面缓存?
在我的 development.rb 文件中:
config.action_controller.perform_caching = true
config.cache_store = :mem_cache_store
我在我的 Ruby on Rails 3 应用程序中使用 Memcached。它适用于动作和片段缓存,但是当我尝试使用页面缓存时,页面存储在文件系统中而不是 Memcached 中。如何让 Rails 也使用 Memcached 进行页面缓存?
在我的 development.rb 文件中:
config.action_controller.perform_caching = true
config.cache_store = :mem_cache_store
你不能。memcached 中页面缓存的等价物是动作缓存,因为请求必须通过 Rails 提供。页面缓存旨在绕过 Rails,因此数据必须存储在可以从服务器提供的文件中,例如 Nginx 或 Apache。页面缓存如此之快的原因是它完全绕过了 Rails。这是 Rails 文档所说的:
页面缓存是一种 Rails 机制,它允许对生成页面的请求由网络服务器(即 apache 或 nginx)完成,而根本不必通过 Rails 堆栈。显然,这是超快的。不幸的是,它不能适用于所有情况(例如需要身份验证的页面),并且由于网络服务器实际上只是从文件系统提供文件,因此缓存过期是一个需要处理的问题。
您可以在此处找到更多信息。
检查这个:
http://globaldev.co.uk/2012/06/serving_memcached_pages_from_nginx/
剪短它,安装“memcaches_page”gem(将其添加到 GemFile 然后捆绑),然后将 caches_page 指令更改为 memcaches_page,然后配置 Nginx 以在点击应用程序之前服务页面 memcached 服务器(在文章中描述)。