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

巴扎黑
Freigeben: 2023-03-15 06:06:02
Original
953 Leute haben es durchsucht

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;
 }
 }
}
 ?>
Nach dem Login kopieren

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;),
],
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!