CakePHP 2.1: Browser-Cache vs View-Cache

9

Ich habe eine Frage darüber, wie View-Caching und Browser-Caching in CakePHP 2.1 zusammen funktionieren.

Ich habe gerade meine App auf CakePHP 2.1 aktualisiert und HTTP-Caching mit der neuen Methode $this->response->modified eingerichtet (was gut funktioniert):

%Vor%

Ich habe auch CakePHP View Caching eingerichtet:

%Vor%

Beide funktionieren gut, wenn sie unabhängig voneinander verwendet werden. Wenn beide aktiviert sind, scheint das Cachephp-View-Caching das Browser-Caching zu überschreiben (insbesondere wird kein Last-Modified -Header gesendet, wenn Seiten aus dem CakePHP-View-Cache bereitgestellt werden). Dadurch wird verhindert, dass der Browser Seiten zwischenspeichert, die aus dem Cachephp-Ansichts-Cache bereitgestellt werden.

Idealerweise möchte ich, dass der Browser Seiten zwischenspeichert, selbst wenn sie aus dem Cache von CakePHP bedient werden (dh ich möchte, dass CakePHP einen Header Last-Modified zurückgibt und auf den Header If-Modified-Since request des Browsers antwortet, unabhängig davon, ob CakePHP hat eine zwischengespeicherte Kopie der Seite zurückgegeben oder nicht).

Ich frage mich nur, ob dies erwartetes Verhalten ist, ob ich etwas falsch mache oder ob es etwas ist, das nicht in Betracht gezogen wurde (oder nicht für wichtig gehalten wird).

    
Tomba 16.03.2012, 14:58
quelle

1 Antwort

2

View-Caching führt die Methode des Controllers von Natur aus nicht wirklich bei jeder Anforderung aus. Ich vermute, dass es die Aktion einmal ausführt und dann die Ausgabe auf die Festplatte zwischenspeichert (oder, egal welche Cache-Engine Sie gerade benutzen). Wenn Sie sich die CacheHelp-Methode _writeFile ansehen, können Sie sehen, wie die zwischengespeicherte Ansicht erstellt wird .

%Vor%

Er erstellt ein neues Objekt Controller (mit einer neuen CakeResponse) und lädt alle Helfer, Plugins usw., die in der Ansicht verwendet werden können, und schreibt sie in den Cache.

Es scheint, dass das Hinzufügen des Headers Last-Modified zur Antwort einer Cache-Aktion / Ansicht einige tiefgreifende Änderungen an der CakePHP-Kernbibliothek erfordert.

    
sesser 10.05.2012, 04:12
quelle