我有以下控制器,當它收到一個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