全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Yii 2.0如何使用页面缓存方法示例

前言

本文主要给大家介绍的是关于Yii2.0如何使用页面缓存的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍。

起初使用页面缓存,发现使用于含有参数的方法存在弊端,只能缓存第一次的页面,导致后面所有不同参数的页面均显示第一次缓存页面;没有生成一个参数页面一个缓存;于是,进行了重写页面缓存。

示例代码

<?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;
 }
 }
}
 ?>

使用:

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# yii2  # 页面缓存  # yii  # 缓存的使用  # Yii2 assets清除缓存的方法  # 深入解析PHP的Yii框架中的缓存功能  # Yii清理缓存的方法  # Yii配置与使用memcached缓存的方法  # yii2缓存Caching基本用法示例  # YII Framework框架教程之缓存用法详解  # 简介PHP的Yii框架中缓存的一些高级用法  # PHP Yii清理缓存的实现方法  # Yii数据库缓存实例分析  # Yii开启片段缓存的方法  # YII框架http缓存操作示例  # Yii框架常见缓存应用实例小结  # 重写  # 的是  # 相关内容  # 给大家  # 这篇文章  # 谢谢大家  # 如何使用  # 进行了  # 参数设置  # 有疑问  # web  # Response  # Instance  # Cache  # caching  # di  # gt  # varByParam  # extends 


相关文章: 开源网站制作软件,开源网站什么意思?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  建站主机与服务器功能差异如何区分?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  建站之星如何开启自定义404页面避免用户流失?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何撰写建站申请书?关键要点有哪些?  制作网站的公司有哪些,做一个公司网站要多少钱?  威客平台建站流程解析:高效搭建教程与设计优化方案  制作农业网站的软件,比较好的农业网站推荐一下?  常州自助建站费用包含哪些项目?  如何在IIS中新建站点并配置端口与物理路径?  高防服务器租用如何选择配置与防御等级?  如何选择CMS系统实现快速建站与SEO优化?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  简单实现Android文件上传  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何在阿里云香港服务器快速搭建网站?  如何在云虚拟主机上快速搭建个人网站?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何高效完成独享虚拟主机建站?  C#如何序列化对象为XML XmlSerializer用法  沈阳制作网站公司排名,沈阳装饰协会官方网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  大连 网站制作,大连天途有线官网?  建站之星北京办公室:智能建站系统与小程序生成方案解析  微信小程序 input输入框控件详解及实例(多种示例)  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  视频网站制作教程,怎么样制作优酷网的小视频?  建站之星后台密码如何安全设置与找回?  Swift中循环语句中的转移语句 break 和 continue  c# 在高并发下使用反射发射(Reflection.Emit)的性能  子杰智能建站系统|零代码开发与AI生成SEO优化指南  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  h5网站制作工具有哪些,h5页面制作工具有哪些?  非常酷的网站设计制作软件,酷培ai教育官方网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  建站主机服务器选购指南:轻量应用与VPS配置解析  盘锦网站制作公司,盘锦大洼有多少5G网站?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何访问已购建站主机并解决登录问题?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  制作网站的模板软件,网站怎么建设?  如何将凡科建站内容保存为本地文件?  如何在自有机房高效搭建专业网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。