Yii 2.0如何使用页面缓存方法示例
发布时间 - 2026-01-11 01:14:50 点击率:次前言

本文主要给大家介绍的是关于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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站优化排名时,需要考虑哪些问题呢?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
高端云建站费用究竟需要多少预算?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
如何快速搭建高效简练网站?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel用户密码怎么加密_Laravel Hash门面使用教程
昵图网官网入口 昵图网素材平台官方入口
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
Laravel集合Collection怎么用_Laravel集合常用函数详解
如何用好域名打造高点击率的自主建站?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
手机软键盘弹出时影响布局的解决方法
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
,南京靠谱的征婚网站?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
*服务器网站为何频现安全漏洞?
jQuery中的100个技巧汇总
浅谈redis在项目中的应用
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
javascript中的try catch异常捕获机制用法分析
JavaScript实现Fly Bird小游戏
利用vue写todolist单页应用
如何快速搭建虚拟主机网站?新手必看指南
如何快速生成ASP一键建站模板并优化安全性?
网易LOFTER官网链接 老福特网页版登录地址
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
Laravel如何处理文件下载请求?(Response示例)
如何快速查询域名建站关键信息?
如何在阿里云ECS服务器部署织梦CMS网站?
Android使用GridView实现日历的简单功能
打造顶配客厅影院,这份100寸电视推荐名单请查收
iOS正则表达式验证手机号、邮箱、身份证号等
如何在腾讯云服务器上快速搭建个人网站?
JavaScript常见的五种数组去重的方式
微信小程序 canvas开发实例及注意事项
HTML 中动态设置元素 name 属性的正确语法详解
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
b2c电商网站制作流程,b2c水平综合的电商平台?
Laravel如何使用模型观察者?(Observer代码示例)
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Laravel如何记录自定义日志?(Log频道配置)
Firefox Developer Edition开发者版本入口
如何确保西部建站助手FTP传输的安全性?
Android实现代码画虚线边框背景效果

