Как кешировать рендер:json
У меня есть действие индекса контроллера, который возвращает вывод JSON.
render :json => my_array.to_json
Какой тип кэширования я должен использовать здесь. Имеет ли смысл "кэширование страниц" для этого.
Или я должен делать кэширование действий, как показано ниже
caches_action :index
2 ответа
Либо кэширование действий, либо кэширование страниц будет работать нормально; Кэширование страниц имеет преимущество в том, что никогда не вызывает стек Rails, но это зависит от того, нужно ли вам контролировать, кто обращается к этому каналу Json.
Я большой поклонник использования кэширования страниц, если вы можете сойти с рук - есть большая экономия на системных ресурсах.:)
РЕДАКТИРОВАТЬ: Пример кэширования страницы, если возникла путаница:
class SomeController < ApplicationController
caches_page :index
def index
render :json => my_array.to_json
end
end
Если я что-то не так понял, это должно быть все, что вам нужно сделать.
Те же соображения должны применяться к JSON, как и любой другой вывод. Если вам нужно проверить доступ к данным для пользователя, то кэширование действий - это путь, иначе кэширование страниц должно быть в порядке.
Если данные изменяются из-за логики в вашем приложении, то обе формы кэширования проблематичны, и вам лучше использовать что-то другое.