Caching einer Aktion in einer mehrsprachigen Website mithilfe der zwischengespeicherten API von Play Framework

Um Aktionen pro Label und Sprache für eine bestimmte Anzahl von Sekunden zwischenzuspeichern, habe ich die folgende Hilfsmethode geschrieben (wobei Label der Name ist, den ich meiner Aktion gebe):

def cacheResponseFor(label: String, duration: Int)(action: EssentialAction) = { 
   Cached({r: RequestHeader => (label + getLanguage(r))}, duration){ action }
}

def getLanguage(request: RequestHeader): String = {
   request.cookies
     .get(helpers.SessionHelpers.LANGUAGE_SESSION)
        .map(_.value)
          .getOrElse(helpers.LanguageHelpers.FRENCH)
}

Aber ich erlebe etwas Seltsames, wenn ich versuche, ein @ zwischenzuspeicheAction für die 60er Jahre und wechsle in der Zwischenzeit von Französisch zu Englisch, zum Beispiel bekomme ich immer die französische Version für die 60er Jahre und wechsle dann zu Englisch.

Nach der Untersuchung fand ich diese MethodegetLanguage wird nicht bei jedem Aufruf dieser Aktion aufgerufen als würde der Schlüssel erst nach Ablauf der Caching-Zeit ausgewertet.

Das ist nicht richtig, ich würde das wollencacheResponseFor wird jedes Mal aufgerufen, wenn ich meine Seite anfordere. Die Sprache wird mit @ ausgewertegetLanguage und ich erhalte die richtige zwischengespeicherte Version, d. h. ich sollte 2 zwischengespeicherte Aktionen erhalten (eine pro Sprache).

Habe ich etwas verpasst?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage