全网整合营销服务商

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

免费咨询热线: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 


相关文章: 制作宣传网站的软件,小红书可以宣传网站吗?  如何彻底删除建站之星生成的Banner?  无锡营销型网站制作公司,无锡网选车牌流程?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  建站主机解析:虚拟主机配置与服务器选择指南  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何解决VPS建站LNMP环境配置常见问题?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  浅谈Javascript中的Label语句  建站主机空间推荐 高性价比配置与快速部署方案解析  建站之星如何助力企业快速打造五合一网站?  网页设计与网站制作内容,怎样注册网站?  如何在景安服务器上快速搭建个人网站?  如何挑选高效建站主机与优质域名?  建站之星安装模板失败:服务器环境不兼容?  php json中文编码为null的解决办法  ,网站推广常用方法?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  建站之星代理如何获取技术支持?  h5在线制作网站电脑版下载,h5网页制作软件?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  在线教育网站制作平台,山西立德教育官网?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  购物网站制作公司有哪些,哪个购物网站比较好?  如何在局域网内绑定自建网站域名?  如何在香港服务器上快速搭建免备案网站?  建站VPS推荐:2025年高性能服务器配置指南  岳西云建站教程与模板下载_一站式快速建站系统操作指南  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  建站之星如何修改网站生成路径?  如何规划企业建站流程的关键步骤?  临沂网站制作公司有哪些,临沂第四中学官网?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  香港服务器租用每月最低只需15元?  网站按钮制作软件,如何实现网页中按钮的自动点击?  视频网站制作教程,怎么样制作优酷网的小视频?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何在云主机快速搭建网站站点?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  如何制作一个表白网站视频,关于勇敢表白的小标题?  宝塔建站后网页无法访问如何解决?  再谈Python中的字符串与字符编码(推荐)  建站之星安装后如何自定义网站颜色与字体?  如何选择PHP开源工具快速搭建网站? 

您的项目需求

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