Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 使用Memcached进行页面缓存_Ruby On Rails 3_Memcached_Page Caching - Fatal编程技术网

Ruby on rails 3 使用Memcached进行页面缓存

Ruby on rails 3 使用Memcached进行页面缓存,ruby-on-rails-3,memcached,page-caching,Ruby On Rails 3,Memcached,Page Caching,我在RubyonRails3应用程序中使用Memcached。它与动作和片段缓存配合得很好,但是当我尝试使用页面缓存时,页面存储在文件系统中,而不是Memcached中。我如何告诉Rails也使用Memcached进行页面缓存 在my development.rb文件中: config.action_controller.perform_caching = true config.cache_store = :mem_cache_store 你不能。memcached中页面缓存的等价物是动作缓

我在RubyonRails3应用程序中使用Memcached。它与动作和片段缓存配合得很好,但是当我尝试使用页面缓存时,页面存储在文件系统中,而不是Memcached中。我如何告诉Rails也使用Memcached进行页面缓存

在my development.rb文件中:

config.action_controller.perform_caching = true
config.cache_store = :mem_cache_store

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

页面缓存是一种Rails机制 允许请求 生成的页面将由 Web服务器(即apache或nginx), 而不必通过考试 轨道完全堆叠。显然,这是 超快。不幸的是,这不可能 适用于任何情况(例如 需要验证的页面)和 因为Web服务器实际上只是 为文件系统中的文件提供服务, 缓存过期是一个 需要处理

您可以找到更多信息。

检查以下内容:


简而言之,安装“memcaches\u page”gem(将其添加到GemFile,然后捆绑),然后将caches\u page指令更改为memcaches\u page,然后在运行应用程序之前将Nginx配置为page memcached server(如本文所述)。

我可以指定页面缓存的存储位置吗?不完全可以,由于文件必须在公共目录之外提供,并且要正确地提供给客户机,它们必须具有与文件相同的路径。例如:public/users/13/profile.html不能存储在public/user_13_profile.html中,因为Nginx或Apache web服务器不会将此文件与后一路径关联。