2010-05-12 87 views
9

我有一個控制器索引操作,它返回json輸出。如何緩存渲染:json

render :json => my_array.to_json 

我必須在這裏使用什麼類型的緩存。 '頁面緩存'對此是否有意義。

或做我必須做的動作緩存像下面

caches_action :index 

回答

3

無論是動作緩存或頁面緩存會工作得很好;頁面緩存會有永遠不會調用Rails堆棧的好處,但這取決於您是否需要控制誰訪問該Json提要。

我很喜歡使用頁面緩存,如果你能擺脫它 - 有大量的系統資源要節省。 :)


編輯:頁面緩存例如,如果有任何的困惑:

class SomeController < ApplicationController 
    caches_page :index 
    def index 
    render :json => my_array.to_json 
    end 
end 

除非我誤解的東西,這應該是所有你需要做的。

+0

如何爲json指定頁面緩存。在我看來,我沒有任何模板? – user290870 2010-05-12 07:33:23

+0

你應該能夠在控制器中指定它,並將代碼添加到我的答案中。 – robotmay 2010-05-12 07:41:01

+0

謝謝!我認爲頁面緩存需要緩存的視圖名稱作爲'caches_page'的參數而不是操作。 – user290870 2010-05-12 08:10:52

2

與其他輸出相同的注意事項應該適用於JSON。如果您需要驗證用戶對數據的訪問權限,則可以採取行動緩存,否則頁面緩存應該沒問題。

如果由於應用程序中的邏輯而導致數據更改,那麼這兩種緩存形式都有問題,您最好使用其他方法。

+1

如何爲json指定頁面緩存?在我看來,我沒有任何模板? – user290870 2010-05-12 07:39:05