Comment cache render: JSON
-
26-09-2019 - |
Question
I ont une action de l'index de commande qui sortie json retours.
render :json => my_array.to_json
Quel type de mise en cache dois-je utiliser ici. Est-ce que la mise en cache de la page «faire pour ce sens.
Ou dois-je faire la mise en cache d'action comme ci-dessous
caches_action :index
La solution
Soit la mise en cache d'action ou la mise en cache de la page fonctionnerait très bien; la mise en cache de la page aurait l'avantage de ne jamais appeler la pile Rails, mais cela dépend si vous avez besoin de contrôler qui accède à ce flux JSON.
Je suis un grand fan de la mise en cache de page si vous pouvez vous en sortir avec elle - il y a de grandes économies sur les ressources du système à avoir. :)
EDIT: exemple de la mise en cache de page, dans le cas où il y avait une confusion:
class SomeController < ApplicationController
caches_page :index
def index
render :json => my_array.to_json
end
end
À moins que je l'ai mal compris quelque chose, cela devrait être tout ce que vous devez faire.
Autres conseils
Les mêmes considérations devraient appliquer à JSON que toute autre sortie. Si vous avez besoin d'accéder validate aux données de l'utilisateur, la mise en cache d'action est la voie à suivre, sinon la mise en cache de la page doit être bien.
Si les données changent en raison de la logique dans votre application, puis les deux formes de mise en cache sont problématiques et vous feriez mieux d'utiliser autre chose.