【问题标题】:Page Caching with Memcached使用 Memcached 进行页面缓存
【发布时间】:2011-08-14 01:09:38
【问题描述】:

我在我的 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 page-caching


    【解决方案1】:

    检查一下:

    http://globaldev.co.uk/2012/06/serving_memcached_pages_from_nginx/

    简单地说,安装“memcaches_page”gem(将其添加到 GemFile 然后捆绑),然后将 caches_page 指令更改为 memcaches_page,然后配置 Nginx 以在访问应用程序之前为页面 memcached 服务器提供服务(在文章中描述)。

    【讨论】:

      【解决方案2】:

      你不能。 memcached 中页面缓存的等价物是动作缓存,因为请求必须通过 Rails 提供。页面缓存旨在绕过 Rails,因此数据必须存储在可以从服务器提供的文件中,例如 Nginx 或 Apache。页面缓存如此之快的原因是它完全绕过了 Rails。这是 Rails 文档所说的:

      页面缓存是一种 Rails 机制 这允许请求 生成的页面将由 网络服务器(即 apache 或 nginx), 无需经过 Rails 完全堆叠。显然,这是 超级快。不幸的是,这不可能 适用于所有情况(例如 需要身份验证的页面)和 因为网络服务器实际上只是 从文件系统提供文件, 缓存过期是一个问题 需要处理。

      您可以找到更多信息here

      【讨论】:

      • 我可以指定页面缓存的存储位置吗?
      • 并非如此,因为文件必须在公共目录之外提供并正确提供给客户端,它们必须与文件具有相同的路径。例如:public/users/13/profile.html 不能存储在 public/user_13_profile.html 中,因为 Nginx 或 Apache Web 服务器不会将此文件与后一个路径关联。
      猜你喜欢
      • 1970-01-01
      • 2010-09-20
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多