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