前言

本文主要给大家介绍的是关于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小时内与您取得联系。