Heim > Artikel > Backend-Entwicklung > Lösen Sie das Problem, dass Yii CFileCache den Wert nicht abrufen kann
Wie kann das Problem gelöst werden, dass Yii CFileCache den Wert nicht abrufen kann? In diesem Artikel wird hauptsächlich die Analyse der Gründe vorgestellt, warum Yii CFileCache den Wert nicht erhalten kann. Freunde, die ihn benötigen, können sich darauf beziehen. Ich hoffe, es hilft allen.
Ich habe
‘cache'=>array( ‘class'=>'system.caching.CFileCache', ),
in der Konfigurationsdatei konfiguriert, es im Controller eingestellt
return array( array( ‘COutputCache+pro', ‘duration'=>86400, ‘varyByParam'=>array(‘id'), ),
und dann die Datenbank geöffnet ‘schemaCachingDuration'=>3600,
Als ich es zum ersten Mal benutzte, gab es eine Cache-Datei und ich stellte fest, dass sie den Zugriff erheblich beschleunigte
Aber mit der Zeit, nach einer gewissen Zeitspanne, vielleicht 10 Minuten, stellte ich fest, dass die Cache-Datei unter Laufzeit/Cache ist plötzlich verschwunden
Ich weiß nicht, warum ich dieses Problem gefunden habe, nachdem ich es lange verfolgt habe
Ich habe auch festgestellt, dass es Ordner im Cache-Verzeichnis gibt . Sie heißen 0a d6 63 3a.
Der Grund, warum die Cache-Dateien beim Warten online verschwunden sind?
Die Cache-Dateien in den Daten auf Laufwerk D Der Speicherplatz ist sehr groß
1. Die Pufferung von yii muss in der Hauptkonfiguration in .php erfolgen,
/****************/ ‘cache' => array ( ‘class' => ‘system.caching.CFileCache' )
Nachdem die Konfiguration abgeschlossen ist, müssen Sie nur noch muss es im Controller konfigurieren...
Yii::app ()->cache->set($key,$value,$expire); Yii::app ()->cache->get($key);
2. Mehrere Caches konfigurieren
main.php-Konfiguration
‘cache' => array ( ‘class' => ‘system.caching.CFileCache' ), ‘dbcache' => array ( ‘class' => ‘system.caching.CDbCache' )
Die Controller muss nur mit der entsprechenden Cacheid aufgerufen werden
Zum Beispiel: Yii::app ()->dbcache
3. Seiten-Caching bedeutet, die gesamte Seite statisch zu machen
Die main.php-Konfiguration ist immer noch dieselbe
Controller: Sie können die COutputCache-Klasse als Verhaltensfilter in unserem Controller-Klassengerät verwenden.
public function filters() { return array ( array ( ‘COutputCache', ‘duration' => 600, ‘ varyByParam' => array(‘id') ) ); }
COutputCache wird als Strategie verwendet, um beim Zwischenspeichern von Daten automatisch Schlüsselnamen zu generieren. Hier ist eine Liste derjenigen, die verwendet werden können:
varyByRoute: Wenn Sie diese Option auf „true“ setzen, wird der Routing-Teil einer bestimmten Anfrage als Teil einer separaten Kennung zum Generieren von Cache-Daten verwendet. Daher können Sie eine Kombination aus Request Controller und Acion verwenden, um zwischengespeicherte Inhalte zu unterscheiden.
varyBySession: Wenn Sie diese Option auf „true“ setzen, wird eine eindeutige Sitzungs-ID verwendet, um Inhalte im Cache zu unterscheiden. Die Sitzung jedes Benutzers ist unterschiedlich, kann jedoch zum Bereitstellen des Caches verwendet werden.
varyByParam: Wie bereits erwähnt, werden die Parameter im Eingabe-GET verwendet, um den Cache-Inhalt zu unterscheiden.
varyByExpression: Legen Sie einen PHP-Ausdruck für diese Option fest. Wir können das Ergebnis des entsprechenden Ausdrucks verwenden, um zwischengespeicherte Inhalte zu unterscheiden.
Beachten Sie außerdem, dass die Standard-Cache-ID von COutputCache Cache ist
4. Fragment-Cache
Fragment-Cache wird zum Zwischenspeichern eines Teils einer Seite verwendet. Wir können Fragment-Caching in Ansichtsskripten verwenden. Wir tun dies, indem wir die Methoden CController::beginCache() und CController::endCache() verwenden.
…some HTML content… <?php if($this—>beginCache($key))?> …content to be cached… <?php $this—>endCache(); ?> …other HTML content…
Verwandte Empfehlungen:
Yii2 integriert Xunsou, um einen effizienten Abruf der chinesischen Wortsegmentierung zu erreichen
So filtert Yii fehlerhaften Code
So verwenden Sie Join und Join mit Abfragen für mehrere Tabellen in Yii2
Das obige ist der detaillierte Inhalt vonLösen Sie das Problem, dass Yii CFileCache den Wert nicht abrufen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!