我有以下控制器,当它收到一个HTTP请求到返回的标签列表/标签缓存一个JSON结果中的Rails
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
我注意到,每当请求到/标签制成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)
为什么不Rails的您使用了生成缓存文件?是因为请求是针对/ tags而不是/tags.json?
嗯,我试过了,它仍然表现出相同的行为(保存到/public/tags.json)。 – 2011-06-15 17:26:19
以及页面缓存的工作方式,它只是在公共场合生成静态页面,这些页面被Web服务器抓取而没有接触到导轨。所以你必须得到rails以不同的名字来保存它们,或者让你的web服务器(Apache或其他)拥有该文件的别名。或者让客户请求带有扩展名的页面。至少我认为像这样的东西应该工作 – loosecannon 2011-06-15 19:57:53
如果它只回应json,取出respond_to块,那是什么附加.json可能 – loosecannon 2011-06-15 19:59:24