HTTP-Cache und Varnish
Diese Seite richtet sich an Entwickler und Administratoren, die eine DXP-Website schnell machen. Die DXP liefert
ibexa/http-cache mit: Ganze Antworten werden zwischengespeichert, mit den Inhalten getaggt, die sie zeigen, und
geleert, wenn sich diese Inhalte ändern. Ohne Varnish übernimmt der HTTP-Cache-Proxy von Symfony innerhalb der
Anwendung diese Aufgabe.
Inhalt
- Die zwei Betriebsarten
- Einstellungen
- Auf Varnish umstellen
- Von Hand leeren
- Wenn eine Seite veraltet bleibt
Die zwei Betriebsarten
| Betriebsart | Setzen | Purge-Typ |
|---|---|---|
| HTTP-Cache von Symfony (Standard) | APP_HTTP_CACHE=1 im Webserver | HTTPCACHE_PURGE_TYPE=local |
| Varnish davor | APP_HTTP_CACHE=0 (stattdessen speichert Varnish) | HTTPCACHE_PURGE_TYPE=varnish |
Die config/packages/ibexa.yaml eines installierten Projekts erklärt, warum eine lange Lebensdauer sicher ist: Das
HTTP-Cache-Bundle "is designed to expire all affected cache on changes".
Einstellungen
| Variable | Standard der Anleitung | Bedeutung |
|---|---|---|
HTTPCACHE_PURGE_TYPE | local | local oder varnish |
HTTPCACHE_DEFAULT_TTL | 86400 | Sekunden, die eine Antwort zwischengespeichert werden darf |
HTTPCACHE_PURGE_SERVER | http://localhost:80 | wohin Purge-Anfragen gehen (Adresse von Varnish) |
HTTPCACHE_VARNISH_INVALIDATE_TOKEN | nicht gesetzt | ein gemeinsames Geheimnis für Purge-Anfragen, wo eine IP-Freigabeliste nicht möglich ist |
TRUSTED_PROXIES | nicht gesetzt | die Adresse des Proxys, damit Symfony seinen Headern vertraut |
Auf Varnish umstellen
Aus der Anleitung des Skeletons (Abschnitt 19):
Setzen Sie in
.env.local:HTTPCACHE_PURGE_TYPE=varnish HTTPCACHE_PURGE_SERVER=http://127.0.0.1:6081 HTTPCACHE_VARNISH_INVALIDATE_TOKEN=<your secret> TRUSTED_PROXIES=127.0.0.1Setzen Sie
APP_HTTP_CACHE=0in der Konfiguration des Webservers.Laden Sie eine VCL, die die Tags und Purge-Anfragen des Bundles versteht. Die Anleitung verweist auf ein Verzeichnis
doc/varnish/"if present" oder auf die Upstream-Dokumentation; im Skeleton selbst wird keine VCL mitgeliefert.Leeren Sie den Cache und leeren Sie einmal alles:
php bin/console cache:clear php bin/console fos:httpcache:invalidate:path / --all
Varnish 6.0 oder 7.1 und neuer sind die Versionen, die die Anleitung nennt.
Von Hand leeren
php bin/console fos:httpcache:invalidate:path / --all # every path
php bin/console fos:httpcache:invalidate:tag <tag> # one tagDas normale Veröffentlichen leert von selbst; leeren Sie nur nach einer Bereitstellung von Templates oder Konfiguration von Hand.
Wenn eine Seite veraltet bleibt
- Ist es der Browser? Laden Sie ohne Cache neu oder testen Sie mit
curl -I. - Ist es der HTTP-Cache? Sehen Sie sich
Ageund die Cache-Header der Antwort an. - Ist es der Anwendungs-Cache? Leeren Sie ihn (Anwendungs-Cache und Redis).
- Mit Varnish: Erreicht ihn der Purge? Prüfen Sie
HTTPCACHE_PURGE_SERVERund das Token sowie das Log von Varnish. - Nach einer Bereitstellung: Haben Sie den Cache nach dem Leeren vorgewärmt (Bereitstellen)?
Verwandte Seiten
- Anwendungs-Cache und Redis
- Umgebungsvariablen
- Webserver einrichten
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.