Kev*_*ang 5 caching ruby-on-rails
我有以下控制器在收到对/ tags的HTTP请求时返回标记列表
class TagsController < ApplicationController
caches_page :index
def index
respond_to do |format|
format.json {
render :json => Tag.all(:order => "name").to_json
}
end
end
end
Run Code Online (Sandbox Code Playgroud)
我注意到每当对/ tags发出请求时,Rails就会在/public/tags.json上生成一个缓存文件.但是,似乎永远不会使用此缓存文件.相反,它始终运行SQL查询来检索标记:
Started GET "/tags" for 127.0.0.1 at 2011-06-15 08:27:29 -0700
Processing by TagsController#index as JSON
Tag Load (0.7ms) SELECT "tags".* FROM "tags" ORDER BY name
Write page <project root path>/public/tags.json (0.3ms)
Completed 200 OK in 35ms (Views: 1.1ms | ActiveRecord: 0.7ms)
Run Code Online (Sandbox Code Playgroud)
为什么Rails不使用正在生成的缓存文件?是因为请求是/ tags而不是/tags.json?
我认为你可能是正确的,你可以指定选项:cache_path来告诉它如何命名文件,所以这样做
caches_page :index, :cache_path => '' # if not try 'tags'
Run Code Online (Sandbox Code Playgroud)
如果你想包含参数,你也可以传递一个过程
caches_page :index , :cache_path => Proc.new {|controller| controller.params }
Run Code Online (Sandbox Code Playgroud)
或其他任何东西
| 归档时间: |
|
| 查看次数: |
2079 次 |
| 最近记录: |