Einige Fragen zum TL-Caching
Hallo,
hätte einige Fragen hinsichtlich Komprimierung und Caching und würde mich freuen, wenn von Euch jemand folgendes überprüfen bzw. nachvollziehen könnte:
System: TYPOlight 2.7.3 @ XAMPP 1.7.1
(i) Komprimierung von CSS/JS-Komponenten
Vorausgeschickt:
Ressourcen liegen sowohl in komprimierter (GZip) als auch unkomprimierter Form vor.
GZip-Kompression ist in den TYPOlight-Einstellungen aktiviert, die betreffenden Rewrite-Direktiven in der .htaccess natürlich auch.
TYPOlight-Caching ist deaktiviert.
Habe bemerkt, dass der Response Header von GZip-komprimierten Javascript-Dateien als MIME-Content-Type "text/css" enthält? Ist das so korrekt bzw. normal? Und wenn ja, warum?
Deaktiviere ich die GZip-Kompression (in den TL-Einstellungen und in der .htaccess) enthalten die Response-Header der Javascripte den MIME-Content-Type "application/javascript"
(ii) Proxy Caching von komprimierten Ressorcen
Sollte man eigentlich für GZip-komprimierte Ressourcen (CSS und JS) im Header das "Vary: Accept-Encoding" setzen, um ev. Probleme mit (älteren) Proxy-Servern zu vermeiden? Wenn ich das richtig verstanden habe, bewirkt dieser Header-Eintrag, dass die betreffenden Ressourcen am Proxy sowohl in komprimierter als auch in unkomprimierter Form gespeichert werden und dadurch dem Client jeweils eine interpretierbare Version angeboten werden kann.
Wie könnte man denn in TL für diese komprimierten Ressourcen den Header dementsprechend setzen?
(iii) Caching und Komprimierung
Testfall 1:
GZip-Kompression: aktiviert
TL-Caching: global deaktiviert (im Webseiten-Root)
Browser-Cache und "system/tmp" geleert
Wenn ich nun eine beliebige Frontend-Seite aufrufe und mir das Apache Access-Log anschaue, dann erhalte ich folgende Request-Einträge:
- HTML-Datei wird in komprimierter Form übertrage mit Status 200
- alle anderen Ressourcen der Seite (css, js, Bilder usw.) werden (falls zutreffend) auch in komprimierter Form übertragen mit Status 200
Rufe ich dieselbe Seite jetzt nochmals auf, dann erhalte ich im Log folgende Einträge:
- alle Ressourcen und auch die HTML-Datei haben den Status 304 Not Modified (mit Ausnahme der cron.php, welche den Status 200 hat); kein HTML-/Ressourcen-Traffic.
Rufe ich die Seite ein weiters Mal auf:
- gleiches Ergebnis wie vorhin, lediglich die HTML-Datei hat jetzt wieder den Status 200 und als Traffic wird die komprimierte Dateigröße angezeigt.
Bei jedem weiteren Refresh wird die HTML-Seite (und nur diese) dann abwechselnd einmal mit Status-Code 200, dann wieder mit Code 304 übertragen. Ist das so normal bzw. kann das jemand bestätigen?
Testfall 2:
GZip-Kompression: aktiviert
TL-Caching: global aktiviert (im Webseiten-Root)
Browser-Cache und "system/tmp" geleert
Beim Aufruf der Frontend-Seite erhalte ich dann im Server-Log:
- alle Ressourcen und die HTML-Seite werden (falls zutreffend) in komprimierter Form übertragen mit jeweils Status-Code 200
Erneuter Refresh der Seite:
- alle Ressourcen (Ausnahme: cron.php) haben nun wiederum den Status-Code 304, kein Ressourcen-Traffic, einzig die HTML-Seite hat den Status 200 und wird in UNKOMPRIMIERTER Form übertragen
Dasselbe Ergebnis erhält man dann für alle weiteren Aktualisierung der Seite - das HTML-Dokument scheint (jedenfalls laut Server-Log) immer in unkomprimierter Form übertragen zu werden.
Daher meine Frage: Wieso wird denn bei aktiviertem TL-Cache das HTML-Dokument nicht in GZip-komprimierter Form ausgeliefert/übertragen?