Nachdem ich im letzten Jahr den StaticFileCache kurz vorgestellt hatte (Englisch / Deutsch), hat sich wieder einiges getan. Weiterhin bin ich auf der Suche nach Feedback, da ich die Extension gerne noch weiter voranbringen würde.
Neben zahlreichen Korrekturen für TYPO3 8.x, TYPO3 9.x, Code Standards wie PSR-2 und den BoostMode, hat sich aber auch ein wenig was an der Funktion geändert. Dies will ich euch nun vorstellen…
Features
GitHub Templates: Es gibt inzwischen GitHub Templates, sodass man im Issue-Tracker ein wenig Ordnung hat und neue Probleme passend beschrieben werden. Zudem gibt es entsprechend Hinweise, dass man „normale Fragen“ gut über das Slack von TYPO3 – Channel #ext-staticfilecache – klären kann.
Gzip Detection: Die Erkennung ob der Benutzer Gzip benutzt oder nicht wurde so optimiert, dass keine manuelle Anpassung in der .htaccess mehr nötig ist. Mit der aktuellen .htaccess Konfiguration aus der Dokumentation geht dies vollautomatisch und der Benutzer bekommt immer die passende Datei.
Database Selections: Alle Datenbank Selektionen wurden in Repository Klassen gekapselt. Dies sind keine ExtBase Repositories, steuern nun aber den manuelle Datenzugriff auf die Datenbank vollständig. In dem Zuge wurde auch auf Doctrine DBAL umgestellt.
Tag Handling: Static File Cache liefert nun die TSFE Page Tags als speziellen Header aus (können gemäß Core via TS und auch Extensions ergänzt werden). Dies geschieht sowohl für die statische generierte Datei (in der geenrierten .htaccess Datei) als auch für das erste Rendern der Seite. Dadurch kann z.B. ein Varnish-Server mittels Tags betrieben werden. Dies ist sehr hilfreich wenn es um das effiziente Löschen von den Caches geht.
Logger: Interne Exceptions werden nun alle vom Logger erfasst und liefern nun Output für eure Logfiles. Dies ist hilfreich bei der Einrichtung und Fehlersuche.
HTTP2 Push services: Es gibt Services für einen HTTP2 Push von Schriften, Bildern, Skripten und Styles. Damit können die HTTP2 Headers benutzt werden.
Debug Header: Das Ergänzen von dem Timestamp als HTML Kommentar unter das Dokument war nicht immer hilfreich, gerade wenn man z.B. JSON rendert. Dies bzgl. wurde der „X-Cache“-Header ergänzt, indem die StaticFileCache Informationen ausgegeben werden können.
Symfony Commands: Alle CommandController wurden zu Symfony Commands migriert. Dies ermöglicht ein „optisch“ besseres ausspielen von Infos. Zusätzlich werden die einzelnen Aufgaben besser strukturiert, weil nur noch ein Task pro Datei möglich ist. Bei einem Update von „< 7.x“ auf „7.x“ müssen die Scheduler Tasks neu angelegt werden.
RemoteFileBackend: Da die Extension bereits ein UrlFrontend für das CachingFramework hatte und wir oft den Usecase hatten, dass wir eine externe Datei „lokal“ verfügbar machen wollten, habe ich den „remote_file“-Cache ergänzt. In diesem Cache kann man eine URL übergeben, das CacheBackend lädt die Datei entsprechend runter und berücksichtigt entsprechend Lifetime & Tags. Sehr praktisch wenn ein FAL Driver zu oversized ist.
Wie gehts es weiter?
Wie findet ihr die neuen Funktionen? Fehlt euch noch etwas in der Extension was mit der Speicherung und dem Caching von statischen Dateien zu tun hat? Freue mich über Feedback…
Alle Infos zur Extension findet ihr unter https://github.com/lochmueller/staticfilecache