2010-05-12 17 views
9

Ich habe eine Controller-Index-Aktion, die JSON-Ausgabe zurückgibt.Wie zu rendern Rendern: JSON

render :json => my_array.to_json 

Welche Art von Caching muss ich hier verwenden. Ist 'Seiten-Caching' sinnvoll?

Oder muss ich wie Action-Caching zu tun, unter

caches_action :index 

Antwort

3

Entweder Aktion Caching oder Seiten-Caching fein funktionieren würde; Das Zwischenspeichern von Seiten hätte den Vorteil, dass der Rails-Stack nie aufgerufen wird, aber es hängt davon ab, ob Sie steuern müssen, wer auf diesen Json-Feed zugreift.

Ich bin ein großer Fan von Seitencaching, wenn Sie damit durchkommen können - es gibt große Einsparungen bei den Systemressourcen zu haben. :)


EDIT: Seiten-Caching Beispiel im Fall gab es eine Verwechslung:

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

Wenn ich etwas falsch verstanden haben, das sollte alles, was Sie tun müssen, sein.

+0

Wie lege ich Seitencache für json fest. Ich habe aus meiner Sicht keine Vorlage? – user290870

+0

Sie sollten nur in der Lage sein, es in der Steuerung anzugeben, fügte den Code meiner Antwort hinzu. – robotmay

+0

danke !. Ich dachte, Seitenzwischenspeicherung erforderte den Namen der Ansicht, die als Argument für 'caches_page' zwischengespeichert wurde, anstelle der Aktion. – user290870

2

Die gleichen Überlegungen sollten für JSON wie jede andere Ausgabe gelten. Wenn Sie den Zugriff auf die Daten für den Benutzer überprüfen müssen, empfiehlt sich das Zwischenspeichern von Aktionen. Andernfalls ist das Zwischenspeichern von Seiten in Ordnung.

Wenn sich die Daten aufgrund der Logik in Ihrer App ändern, sind beide Formen des Caching problematisch und Sie verwenden besser etwas anderes.

+1

Wie lege ich Seiten-Caching für Json fest. Ich habe aus meiner Sicht keine Vorlage? – user290870