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

Caching: die Ebenen und wie man sie invalidiert

Die Caches von Exponential für Entwickler, die eine Cache-Komponente mit Pools und Tags kennen - kompilierte Templates, INI- und Override-Caches, der Content-View-Cache pro Rolle, Template-Cache-Blöcke, Daten-Caches…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/web-framework-developers/caching-layers.md

On this page

This page is a translation. Read the English original

Caching: die Ebenen und wie man sie invalidiert

Diese Seite richtet sich an Entwickler, die eine Cache-Komponente verwenden (Symfony Cache, Cache von Laravel, das Cache-Framework von Django, Rails.cache von Rails). Exponential hat mehrere Caches, jeder mit einer ID und Tags, verwaltet von eZCache (kernel/classes/ezcache.php), und die meisten davon invalidiert der Kernel, wenn Inhalte veröffentlicht werden. Der übliche Grund für „meine Änderung erscheint nicht“ ist eine dieser Ebenen (Caches).

Inhalt

  1. Die Ebenen
  2. Leeren
  3. Fragment-Caching in Templates
  4. Daten in PHP cachen
  5. Unter persistenten Workern
  6. Im Vergleich mit anderen Frameworks

Die Ebenen

EbeneEnthältGeleert durch
Kompilierte Templates (template)zu PHP kompilierte .tplTemplate-Änderungen, --clear-tag=template
Template-Override-Cache (template-override)auf welche Datei eine Override-Regel auflösteine neue Template-Datei erfordert das Leeren
INI-Caches (ini, global_ini)geparste Einstellungen--clear-tag=ini
Content-View-Cache (content)gerenderte Inhalts-Views, pro BerechtigungskontextVeröffentlichen des Knotens und verwandter Inhalte (eZContentCacheManager)
Template-Block-Cache (template-block){cache-block}-FragmenteVeröffentlichen (standardmäßig), Ablauf
Rollenbewusster HTTP-Cache (exphttpcache)ganze Seiten pro Berechtigungskontext; aus, bis httpcache.ini Enabled=enabledInhaltsänderungen (Der rollenbewusste HTTP-Cache)
Velocity-Response-Cacheöffentliche Seiten im Serverprozess; aus, bis er aktiviert wirdeigene Regeln, ./console exp:velocity cache clear --apply (Velocity-Response-Cache)
Weitereurlalias, imagealias, translation, design_base, user_info_cache, querycache ...ihre IDs und Tags

Das Caching von Inhalts-Views steuert site.ini [ContentSettings] ViewCaching (mitgeliefert: enabled). Die vollständige Liste mit IDs und Tags: Anleitung zu Caches.

Leeren

php bin/php/ezcache.php --clear-tag=ini --allow-root-user
php bin/php/ezcache.php --clear-id=template-override --allow-root-user
./console exp:cache status
./console exp:velocity deploy          # the usual way after a code change: everything in the right order

exp:velocity deploy leert die Caches in einer Reihenfolge, die so gewählt ist, dass eine von altem Code gerenderte Seite nie erneut gecacht wird (Server und Deployment). Eine Erweiterung kann ihren eigenen Cache mit site.ini [Cache] CacheItems[] und einem [Cache_<id>]-Block in die Liste aufnehmen, sodass ezcache.php und Setup > Caches ihn leeren können.

Fragment-Caching in Templates

{cache-block keys=array( 'expdemo-stats', $current_user.contentobject_id ) expiry=300}
  {def $stats = fetch( 'expdemo', 'stats', hash() )} ... {undef $stats}
{/cache-block}

Daten aus Ihren eigenen Tabellen lösen das Leeren beim Veröffentlichen nicht aus: Wählen Sie ein expiry, oder verwenden Sie ignore_content_expiry und leeren Sie den template-block-Cache selbst, wenn sich Ihre Daten ändern. Bilden Sie den Schlüssel aus allem, wovon die Ausgabe abhängt, einschließlich des Benutzers, wenn das Fragment persönlich ist (Template-Caches).

Daten in PHP cachen

Im Kernel gibt es keinen Cache-Pool nach PSR-6 oder PSR-16. Aufwendige Ergebnisse werden über den Cluster-Datei-Handler gespeichert, sodass sie auf einem einzelnen Server und in einem Cluster funktionieren:

$file = eZClusterFileHandler::instance( eZSys::cacheDirectory() . '/expdemo/stats.cache' );
$stats = $file->processCache(
    function ( $path, $mtime ) { return json_decode( (string)file_get_contents( $path ), true ); },
    function ( $path ) {
        $stats = expDemoStats::compute();
        return array( 'content' => $stats, 'binarydata' => json_encode( $stats ), 'scope' => 'expdemo-stats' );
    },
    300 );

Während ein Prozess die Daten erzeugt, warten die anderen, statt dieselben Daten ebenfalls zu erzeugen (Caching in Anwendungen). Cache-Dateien müssen über eZClusterFileHandler::instance() geschrieben werden, nicht mit direkten Dateiaufrufen. Mit der Erweiterung sevenx_valkey_cache hält eine Installation den Content-View-Cache und den kompilierten INI-Cache in Valkey oder Redis (sevenx_valkey_cache).

Unter persistenten Workern

Velocity hält PHP-Prozesse zwischen Requests am Leben: Eine statische Variable überlebt bis in den nächsten Request. Halten Sie niemals benutzerspezifische Daten in statischen Variablen; der Prozessspeicher wird zwischen Workern nicht geteilt, er ist also auch kein gemeinsamer Cache.

Im Vergleich mit anderen Frameworks

FrameworkKonzeptExponential
SymfonyCache-Pools, Tags, HTTP-Cache mit ESICache-IDs und Tags in eZCache, der View-Cache, die HTTP-Caches
LaravelCache::remember()processCache() mit einem Erzeugungs-Callback
DjangoCache pro View, Template-Fragment-CacheContent-View-Cache, {cache-block}
RailsFragment- und Russian-Doll-Caching{cache-block} mit Schlüsseln

Der entscheidende Unterschied: Inhalts-Caches werden durch das Veröffentlichen invalidiert, automatisch und pro Knoten; Ihre eigenen Daten brauchen einen expliziten Ablauf oder ein explizites Leeren.

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