如何缓存渲染:json

use*_*870 9 json caching ruby-on-rails page-caching action-caching

我有一个控制器索引操作,它返回json输出.

render :json => my_array.to_json
Run Code Online (Sandbox Code Playgroud)

我必须在这里使用什么类型的缓存."页面缓存"对此有意义吗?

或者我必须像下面那样进行动作缓存

caches_action :index
Run Code Online (Sandbox Code Playgroud)

rob*_*may 4

操作缓存或页面缓存都可以正常工作;页面缓存的好处是永远不会调用 Rails 堆栈,但这取决于您是否需要控制谁访问该 Json feed。

如果可以的话,我非常喜欢使用页面缓存——这样可以节省大量的系统资源。:)


编辑:页面缓存示例,以防出现任何混淆:

class SomeController < ApplicationController
  caches_page :index
  def index
    render :json => my_array.to_json
  end
end
Run Code Online (Sandbox Code Playgroud)

除非我误解了什么,否则这应该就是你需要做的。

  • 但是,它不会以正确的内容类型提供。为此,您需要调整虚拟主机(例如,如果使用 Apache)来指定该内容类型,或者手动缓存 JSON 并通过您的操作提供它。 (2认同)