2016-03-21 8 views
8

Ich arbeite an einem Laravel 5.1-Projekt, mit einer Menge von Ajax-Aufrufe, die HTML-Blöcke zurückgeben.Laravel 5.1 Objektorientierte Ajax-Antwort Caching

Um die Geschwindigkeit der Website zu optimieren, möchte ich private und öffentliche Response-Caching implementieren. das funktioniert gut folgenden Code:

 return response() 
     ->json($result) 
     ->header('Cache-Control', 'public, max-age=300'); 

Doch es auf diese Weise zu halten gewohnt in Kontoobjekten verwenden, die innerhalb der 300 Sekunden aktualisiert werden.

Gibt es Möglichkeiten, die es mir ermöglichen, den Antwort-Cache einer Anfrage zu löschen, wenn und nur wenn die zurückkehrenden Objekte aktualisiert wurden?

+0

Um zu wissen, dass sie aktualisiert wurden, müssten Sie die eigentliche Anfrage senden. Es sei denn, Sie erstellen eine Art Trigger, wenn ein Wert aktualisiert wird, der dem Cache mitteilt, dass er nicht länger verwendet werden soll. –

+0

Yup, ich könnte E-Tags mit einem MD5-Hash des aktualisierten Status verwenden. Ich möchte dies als letzten Ausweg behalten und in der Zwischenzeit nach einem eleganten Weg suchen. – Frederiek

Antwort

0

Vielleicht können Sie versuchen Server Side Caching mit so etwas wie folgt. leider ist das rohe

function sometest(User $user) 
{ 

    /** . . .conditions to check if some data has changed . . . **/ 


    $jsonResponse = Cache::remember(Auth::id() . "_sometest", 300, function() use ($user) 
    { 
     $result = $user->all(); //get result here 

     return $result; 
    }); 

    return response()->json($jsonResponse); 
} 

Sie können Sie auch

versuchen können, über hier Cache

lesen