Heim  >  Artikel  >  Backend-Entwicklung  >  Yii 2.0-Erklärung der Seiten-Caching-Methoden

Yii 2.0-Erklärung der Seiten-Caching-Methoden

巴扎黑
巴扎黑Original
2017-08-13 11:30:00932Durchsuche

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
{
 /**
 * 参数设置,默认无参数
 * 用法:&#39;varByParam&#39; => Yii::$app->request->get(&#39;id&#39;)
 * @var string
 */
 public $varByParam = &#39;&#39;;

 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 ([&#39;cache&#39;, &#39;duration&#39;, &#39;dependency&#39;, &#39;variations&#39;] 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, &#39;cacheResponse&#39;]);
  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:


[
&#39;class&#39; => &#39;common\lib\PageCache&#39;,
  &#39;only&#39; => [&#39;view&#39;],
  &#39;duration&#39; => 0, //永不过期
  &#39;varByParam&#39; => Yii::$app->request->get(&#39;id&#39;),
],

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn