Seiten-Caching bezieht sich auf das Zwischenspeichern des Inhalts der gesamten Seite auf der Serverseite. Wenn anschließend dieselbe Seite angefordert wird, wird der Inhalt aus dem Cache abgerufen und nicht neu generiert. Der folgende Artikel stellt hauptsächlich relevante Informationen darüber vor, wie Yii2.0 das Seiten-Caching verwendet. Freunde in Not können darauf verweisen.
Vorwort
Dieser Artikel stellt Ihnen hauptsächlich den relevanten Inhalt darüber vor, wie Yii2.0 das Seiten-Caching verwendet, und teilt ihn als Referenz und Studieren, werfen wir einen Blick auf die ausführliche Einführung.
Ich habe zunächst das Seiten-Caching verwendet und festgestellt, dass die Methode, die Parameter enthält, Nachteile hat. Sie konnte nur die erste Seite zwischenspeichern, sodass auf allen nachfolgenden Seiten mit unterschiedlichen Parametern keine Parameterseite generiert wurde Cache; daher wurde der Seitencache neu geschrieben.
Beispielcode
<?php namespace common\lib; use Yii; use yii\caching\Cache; use yii\di\Instance; use yii\web\Response; use yii\filters\PageCache as PCache; /** * 重写页面缓存,增加varByParam参数一列 */ class PageCache extends PCache { /** * 参数设置,默认无参数 * 用法:'varByParam' => Yii::$app->request->get('id') * @var string */ public $varByParam = ''; public function beforeAction($action) { if (!$this->enabled) { return true; } $this->cache = Instance::ensure($this->cache, Cache::className()); if (is_array($this->dependency)) { $this->dependency = Yii::createObject($this->dependency); } $properties = []; foreach (['cache', 'duration', 'dependency', 'variations'] as $name) { $properties[$name] = $this->$name; } $id = $this->varyByRoute ? $action->getUniqueId().$this->varByParam : __CLASS__; $response = Yii::$app->getResponse(); ob_start(); ob_implicit_flush(false); if ($this->view->beginCache($id, $properties)) { $response->on(Response::EVENT_AFTER_SEND, [$this, 'cacheResponse']); return true; } else { $data = $this->cache->get($this->calculateCacheKey()); if (is_array($data)) { $this->restoreResponse($response, $data); } $response->content = ob_get_clean(); return false; } } } ?>
Verwendung:
[ 'class' => 'common\lib\PageCache', 'only' => ['view'], 'duration' => 0, //永不过期 'varByParam' => Yii::$app->request->get('id'), ],
Das obige ist der detaillierte Inhalt vonYii 2.0-Erklärung der Seiten-Caching-Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!