Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

HTTP-Caching und Reverse Proxies

Caching auf HTTP-Ebene in Exponential für Entwickler, die den HttpCache von Symfony, Varnish-Setups, das Response-Caching von Laravel oder die Cache-Middleware von Django kennen - Seiten-Header für anonyme Besucher aus…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/web-framework-developers/http-caching-and-reverse-proxies.md

On this page

This page is a translation. Read the English original

HTTP-Caching und Reverse Proxies

Diese Seite richtet sich an Entwickler, die Cache-Control in einem Controller setzen, Varnish vorschalten oder den HTTP-Cache eines Frameworks verwenden. In Exponential sind Seiten-Header Einstellungen, und es gibt zwei eingebaute Seiten-Caches, die vor dem Kernel liegen. Auf HTTP-Ebene wird nichts gecacht, bis Sie es einschalten.

Inhalt

  1. Was standardmäßig gesendet wird
  2. Header für anonyme Besucher
  3. Der rollenbewusste HTTP-Cache
  4. Der Velocity-Response-Cache
  5. Hinter einem Proxy oder CDN
  6. Niemals cachen
  7. Im Vergleich mit anderen Frameworks

Was standardmäßig gesendet wird

Seiten: Cache-Control: no-cache, must-revalidate, ein abgelaufenes Expires und Pragma: no-cache. So behält kein Browser, Proxy oder CDN eine Seite, bis Sie es anders entscheiden (HTTP-Caching für anonyme Besucher).

Header für anonyme Besucher

# settings/override/site.ini.append.php
[HTTPHeaderSettings]
CustomHeader=enabled
OnlyForAnonymous=enabled
OnlyForContent=enabled

HeaderList[]
HeaderList[]=Cache-Control
HeaderList[]=Expires

Cache-Control[]
Cache-Control[/]=public, max-age=60
Expires[]
Expires[/]=60

OnlyForAnonymous macht das sicher: Ein angemeldeter Benutzer erhält immer die No-Cache-Header. Die Schlüssel sind Pfade, sodass verschiedene Teile des Baums unterschiedliche Lebensdauern erhalten können. Der Preis ist Veraltung: Ein anonymer Besucher sieht nach einer Bearbeitung möglicherweise eine Seite, die bis zu max-age Sekunden alt ist.

Der rollenbewusste HTTP-Cache

Der HTTP-Cache des Kernels (settings/httpcache.ini, ausgeliefert mit [HttpCacheSettings] Enabled=disabled) speichert gerenderte Inhalts-Views mit einem Schlüssel aus Schema, Host, Siteaccess, Pfad und dem Berechtigungskontext des Besuchers: eine Kopie für anonyme Besucher, eine pro Kombination aus Rollen und Rolleneinschränkungen und eine private Kopie nur dort, wo eine Richtlinie content/read vom Benutzer abhängt. Der nächste Request wird beantwortet, bevor der Kernel startet: durch einen frühen Ausstieg, der unter Apache, PHP-FPM oder FrankenPHP aus config.php eingebunden wird, und unter Velocity durch den Serverprozess selbst. Der Header X-Exp-Cache meldet HIT, STALE, MISS oder BYPASS mit einer Begründung. Das eigene Formular-Token des Besuchers wird bei jedem Treffer wieder in die gespeicherte Seite eingesetzt (Der rollenbewusste HTTP-Cache).

Das ist ungewöhnlich: Die meisten HTTP-Caches von Frameworks bedienen nur anonymen Verkehr. Hier teilen sich angemeldete Mitglieder gecachte Seiten auf sichere Weise, weil der Schlüssel ihr Berechtigungskontext ist.

Der Velocity-Response-Cache

Velocity kann wiederholte Requests für öffentliche Seiten innerhalb des Serverprozesses beantworten, noch bevor ein Worker gewählt wird: bedingte Requests (304), ETag, Age, Stale-While-Revalidate und Invalidierung, wie ein kleiner in den Server eingebauter Reverse Proxy. Er ist ausgeschaltet, bis eine Einstellung ihn aktiviert (Velocity-Response-Cache). Leeren Sie ihn bei einem Deployment als Letztes: ./console exp:velocity cache clear --apply.

Hinter einem Proxy oder CDN

  • Tragen Sie die Adressen des Proxys in site.ini [HTTPHeaderSettings] TrustedProxies[] ein, damit weitergereichtes Schema und weitergereichter Host nur von ihnen geglaubt werden (Vertrauenswürdige Proxies, Hinter einem Reverse Proxy).
  • Lassen Sie das CDN nur cachen, was die Site als cachebar kennzeichnet; angemeldete Sessions tragen ein Cookie, das das CDN durchreichen muss.
  • Für einen vorgeschalteten Proxy mit Purging kann httpcache.ini [HttpCacheSettings] TagHeader die Purge-Tags jeder Seite (ihre Knoten, Objekte und Layouts) in einem Header wie xkey (Varnish-xkey-VMOD), Surrogate-Key (Fastly) oder Cache-Tag (Cloudflare) senden; standardmäßig ist die Einstellung disabled, weil die Tags interne IDs nennen. Den Purge-Request beim Veröffentlichen an den Proxy zu senden, ergänzen Sie selbst, zum Beispiel in einem content/cache-Listener (Ereignisse und Listener).

Niemals cachen

Aus HTTP-Caching und CDNs: Seiten für angemeldete Benutzer in einem gemeinsamen Cache, Warenkörbe, Checkout, Kontoseiten, Formulare mit einem Formular-Token (das Token gilt pro Session) und die Administrationsoberfläche.

Im Vergleich mit anderen Frameworks

FrameworkKonzeptExponential
SymfonyReverse Proxy HttpCache, #[Cache], ESIüber Einstellungen gesteuerte Header, der rollenbewusste HTTP-Cache, der Velocity-Response-Cache; kein ESI
LaravelPakete für Response-Caching, Middleware für Cache-Controldieselben Einstellungen und Caches
Djangocache_page, UpdateCacheMiddlewaredasselbe
Railsexpires_in, fresh_whenHeader pro Pfad in den Einstellungen

Verwandte Seiten

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x