2010-05-12 70 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