2010-05-12 2 views
9

У меня есть действие индекса контроллера, которое возвращает выход json.Как кэшировать рендеринг: json

render :json => my_array.to_json 

Какой тип кэширования я должен использовать здесь. «Каширование страниц» имеет смысл для этого.

Или я должен сделать кэширование действий, как показано ниже

caches_action :index 

ответ

3

Либо кэширование действий или кэширование страниц будет работать нормально; кэширование страниц будет иметь преимущество никогда не вызывать стек Rails, но зависит от того, нужно ли вам контролировать, кто обращается к этому каналу Json.

Я большой поклонник использования кеширования страниц, если вы можете с ним справиться - есть большая экономия на системных ресурсах, которые будут иметься. :)


EDIT: Page пример кэширования, в случае, если не было никакой путаницы:

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

если я не понял что-то, что должно быть все, что вам нужно сделать.

+0

как указать кеширование страницы для json. На мой взгляд, у меня нет шаблона? – user290870

+0

Вы должны просто указать его в контроллере, добавив код к моему ответу. – robotmay

+0

спасибо !. Я думал, что кэширование страницы требует, чтобы имя представления было кэшировано как аргумент «caches_page» вместо действия. – user290870

2

Те же соображения должны относиться к JSON как к любому другому выходу. Если вам нужно проверить доступ к данным для пользователя, тогда кэширование действий - это путь, иначе кэширование страниц должно быть прекрасным.

Если данные изменяются из-за логики в вашем приложении, то обе формы кэширования являются проблематичными, и вам лучше использовать что-то еще.

+1

Как указать кеширование страницы для json. На мой взгляд, у меня нет шаблона? – user290870

Смежные вопросы