缓存技术之——Yii2性能优化之:缓存依赖

13. Yii 2.0 缓存介质 Yii 2.0 框架对缓存的处理支持很多种方式,处理缓存的类文件所在的目录为:\vendor\yiisoft\yii2\caching,这里对一些常用的缓存处理类文件,作简单地说明: Cache.php:缓存介质的父类(基类)ApcCache.php: apc缓存,单台服务器最快的缓存介质,将数据存放在共享内存块中DbCache.php: 数据库缓存,将数据存放在数据库中FileCach 阅读详情

Yii中的缓存依赖,简单来说就是将缓存和另外一个东西绑定在一起,如果另外一个东西发生变化,那么缓存也将发生变化。有点儿类似于JS中的触发事件(但是也不那么像),缓存的变动是依赖的东西所导致的。

依赖可以是文件、数据库、甚至是一些表达式。功能十分强大。

Yii提供了5中依赖方法,我们这里介绍其中的3种常用依赖。

1、文件依赖

顾名思义就是将缓存和文件绑定在一起。如果文件的内容发生变化,那么缓存将会收到影响。(Yii判断的标准是文件的最后修改时间)

我们通过实例来演示一下这个过程。

1、首先获取缓存组件

$cache = \Yii::$app->cache;

2、实例化FileDependency类(其中文件依赖名字为:fileName),同时将其赋值给$dependency变量。这里,我们将缓存和yanying.txt文件做关联,如果yanying.txt内容发生变化,那么和之对应的缓存将失效,不能访问。

$dependency = new \yii\caching\FileDependency(['fileName'=>'yanying.txt']);

3、下面我们在缓存中添加一个key为file_key,给其的值为hello world。同时将过期时间设置为3000秒,最后一个参数写上$dependency依赖。

$cache->add('file_key','hello world',3000,$dependency);

4、在3000秒之内,我们刷新网页。一直可以获取到file_key的值为hello world。

$cache->get('file_key'); // hello world

5、这时,我们改变yanying.txt文件内的值。尽管缓存并没有过期,我们也无法获取到缓存的值。因为依赖的文件发生了变化,缓存即被失效。

var_dump($cache->get('file_key')); // false

2、表达式依赖

表达式依赖是将表达式运算过后的值和缓存捆在一起形成依赖,当表达式值发生变化时候,缓存将受到影响

1、同上获取缓存组件

$cache = \Yii::$app->cache;

2、实例化ExpressionDependency类(表达式依赖名字为:expression),同时将其赋值给$dependency变量。这里,表达式依赖不同于文件依赖,他的expression所对应的是\Yii::$app->request->get("id"),是直接get链接中的id值(这里的表达式是php表达式,不只限制于YII代码)。

$dependency = new \yii\caching\ExpressionDependency(['expression'=>'\Yii::$app->request->get("id")']);

3、下面我们在缓存中添加一个key为file_key,值为hello world。同时将其过期时间设置为3000秒之后,最后一个参数写上$dependency依赖。

$cache->add('file_key','hello world',3000,$dependency);

4、在3000秒之内,我们刷新网页,同上,一直可以获取到file_key的值为hello world。

$cache->get('file_key'); // hello world

5、这时,我们改变链接中id的值。那么:\Yii::$app->request->get("id")获取到的值即会发生变化,则缓存失效。同时无法获取缓存的值。

var_dump($cache->get('file_key')); // false

3、db依赖

db依赖也是实际生产中最常接触的一种依赖,我们可以将SQL语句直接作为依赖条件。当数据库查询出的内容发生变化时候,缓存即会受到影响。

依此,我们可以通过此方法来判断我们缓存的数据是否需要更新,当数据库有变化内容时候,我们更新缓存。

1、首先还是获取缓存组件

$cache = \Yii::$app->cache;

2、实例化DbDependency类(db依赖名为:sql)。同时将其赋值给$dependency变量。其中sql对应的值是直接可执行的sql语句。

$dependency = new \yii\caching\DbDependency(['sql'=>'SELECT COUNT(*) FROM user']);

3、下面我们在缓存中添加一个key为file_key,值为hello world。同时将其过期时间设置为3000秒之后,最后一个参数写上$dependency依赖。

$cache->add('file_key','hello world',3000,$dependency);

4、假设数据库数据一直没有发生变化,那么3000秒之内此缓存不会发生任何变化。我们可以通过下面代码直接获取值hello world.

$cache->get('file_key'); // hello world

5、这时,如果数据库添加了一条新的数据,那么此缓存即将失效,无法获取。这里sql依赖判断标准是查询结果,我们这里使用了记录的条数,你也可以直接使用select * from table只要结果发生变化,都会影响缓存

var_dump($cache->get('file_key')); // false

这时我们也可以愉快的重新获取数据库值,进行新的缓存啦。

贵在坚持,相信自己.
【Hyper-V】虚拟机网络配置全解析:从端口映射到固定IP实战 本文全面解析Hyper-V虚拟机网络配置,从理解虚拟交换机三种模式(外部、内部、专用)的底层逻辑入手,指导用户创建稳定的内部/NAT网络,并详细演示如何在Linux与Windows虚拟机中配置固定IP。文章进一步深入讲解端口映射原理与netsh命令实战,以及双网卡配置和PowerShell自动化脚本等高级技巧,帮助用户彻底解决虚拟机网络“失联”问题,实现灵活可控的网络环境。 阅读详情

相关推荐

Maya ACES工作流程配置(Arnold 及 RedShift 贴图配置规范-还原出SP-Aces流程下贴图正确的效果) PS还原Aces流程下渲染的图

*如果使用SP,项目工程如果新建的时候设置的就是Aces的流程的话,按规范正常导出即可,贴图会带上相对应的后缀,然后贴图导入材质球的时候会根据后缀自动设置相对应的色彩空间;**万一不是,就自己手动设置一下对应的色彩空间即可;然后点击选择当前的或者选择全部导入的贴图,点击右下角后,开始转换;我复制了一下,一个默认没有LUT的效果,然后另外一个是加载2个LUT后的还原效果,和渲染的效果应该是没有区别的,至少我没有看出明显的区别;把需要转换的贴图拖拽到左侧,然后右面选择需要转换到的相对应的色彩空间;...

Yuulily 7994

Yii2缓存依赖

yii2缓存的5种依赖方式: 1:DbDependency 将SQL语句直接作为依赖条件。当数据库查询出的内容发生变化时候,缓存即会受到影响。 $cache = Yii::$app->cache; $dependency_sql = 'SELECT COUNT(*) FROM table '; //依赖sql文的select必须只能是一个值 $dependency = new DbDependency( ['sql' => $dependency_sql] ); $cache-&g.

日常博客 533

LightTools中VBA宏的编写入门

LightTools和VBA联动

bestgamer的博客 2348

Yii2性能优化之:缓存依赖

Yii中的缓存依赖,简单来说就是将缓存和另外一个东西绑定在一起,如果另外一个东西发生变化,那么缓存也将发生变化。有点儿类似于JS中的触发事件(但是也不那么像),缓存的变动是依赖的东西所导致的。 依赖可以是文件、数据库、甚至是一些表达式。功能十分强大。 Yii提供了5中依赖方法,我们这里介绍其中的3种常用依赖。 1、文件依赖 顾名思义就是将...

weixin_34013044的博客 243

Multisim实战:从零搭建体温检测报警电路(附完整仿真文件+调试技巧)

本文详细介绍了如何使用Multisim从零搭建体温检测报警电路,涵盖LM35温度传感器、LM358运算放大器等核心器件的选型与连接,以及信号调理、阈值比较和数码管显示等关键电路设计。附赠完整仿真文件和实用调试技巧,帮助电子工程初学者快速掌握体温温度检测系统的设计与实现。

weixin_28285943的博客 293

STM32 上 FreeRTOS 的启动与任务调度详解

4. SysTick定时器:FreeRTOS启动调度器后,会接管STM32的SysTick定时器,用于生成系统节拍,因此不要在HAL库中重复配置SysTick(比如HAL_Init()中已配置,无需再手动调用SysTick_Config()),否则会导致系统节拍异常,任务延迟不准。2. 任务栈大小需按需配置,不是越大越好(浪费RAM),也不能太小(会导致栈溢出),比如简单的传感器读取任务,1024字(4096字节)足够,复杂任务(比如串口接收+数据解析)可调整为2048字。

qq_40170041的博客 867

yii2使用缓存

yii2的页面缓存 适用于缓存首页,关于我们等页面变化很少的html页面。public function behaviors() { return[ [ 'class'=>'yii\filters\PageCache', //页面缓存 'duration'=>100,//缓存时间

一杯苦恰啡的博客 1351

YOLOv10改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 104

如何使用yii2的缓存依赖特性

目录 如何使用yii2的缓存依赖特性 概述 页面缓存 缓存依赖 链式依赖 总结 如何使用yii2的缓存依赖特性 概述 缓存是Yii2的强大特性之一,合理使用缓存技术可以有效地减小服务器的访问压力。Yii2最基本的缓存包括数据缓存、片段缓...

weixin_30888707的博客 228

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

伶俐角少儿编程 729

最小二乘(MLS)求点云法向量

MLS算法的基本思想是通过在点云的局部邻域内拟合一个光滑曲面,如平面或多项式曲面,以此来重建和处理点云数据。对于法向量估计,MLS通常在每个点的邻域内拟合局部平面,然后从该平面的法向量作为点的法向量。

twnkie的博客 744

北哥大话Yii2缓存机制 - 缓存依赖

我们都知道,yii2的缓存是支持依赖的,就是我们设置的缓存是否失效除了过期时间还决定于它所依赖的东东是否变化。 用好依赖将大大提高我们使用缓存的效果,本节讲解yii2缓存的5种依赖方式。 还是先列某 yiicachingDbDependency yiicachingExpressionDependency yiicachingFileD...

weixin_34273046的博客 340

(数字图像处理MATLAB+Python)第五章图像增强-第一节:图像增强概述和基于灰度级变换的图像增强

图像增强(Image Enhancement):指不考虑图像降质原因,利用各种数学方法和变换手段,增强图像中人们感兴趣部分或提高有用的图像特征的清晰度。从图像质量来看,图像增强提高了图像的可懂度,改善了图像的视觉效果例如在现实场景中,针对那些对比度较差、视觉效果不好的图像,我们就可以利用图像增强改善视觉质量图像增强可分为如下几种基于灰度级变换的图像增强基于直方图修正的图像增强基于照度反射模型的图像增强基于模糊技术的图像增强基于伪彩色处理的图像增强其他图像增强方法分段线性灰度级变换。

快乐江湖的博客 3334

Yii2 框架入门:理解 Yii 2 的定位、设计理念、版本演进与运行环境要求

Yii 是一个高性能、基于组件(component-based)的 PHP 框架,专门用于快速开发现代 Web 应用。本篇指南将带你系统理解 Yii 2 的本质定位、与其他框架的差异化设计哲学、1.1 与 2.0 两代版本的演进脉络,以及部署 Yii 2 前必须满足的运行环境与前置知识。阅读完本文,你将能够独立判断 Yii 是否适合你的项目,并能够使用仓库自带的依赖检查工具验证运行环境,为后续的安

gitblog_00698的博客 1080

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

php缓存依赖的内容,Yii2性能优化之:缓存依赖

Yii中的缓存依赖,简单来说就是将缓存和另外一个东西绑定在一起,如果另外一个东西发生变化,那么缓存也将发生变化。有点儿类似于JS中的触发事件(但是也不那么像),缓存的变动是依赖的东西所导致的。依赖可以是文件、数据库、甚至是一些表达式。功能十分强大。Yii提供了5中依赖方法,我们这里介绍其中的3种常用依赖。1、文件依赖顾名思义就是将缓存和文件绑定在一起。如果文件的内容发生变化,那么缓存将会收到影响。...

weixin_39601929的博客 141

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

yii2 数据库缓存

本文使用yii2数据库缓存依赖,主要解决一次查询表多次利用,减少对数据表的查询,把数据查出来的值保存在缓存中。

qinAction的博客 956

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Yii2】使用Cache缓存提高性能

Yii2 使用 Cache 缓存可以提高应用程序的性能,减轻服务器负担。Yii2 提供了多种缓存方法,如 MemCache、APC、Redis 等。这里以 Redis为例,介绍如何在 Yii2 中使用缓存。

q8688的博客 1635

揭秘Yii 2缓存机制:如何将电商页面加载速度提升300%

提升电商页面加载速度?揭秘PHP Yii 2电商系统缓存优化方案,通过页面缓存、数据缓存与查询缓存三级机制,显著减少服务器负载。实际应用中性能提升达300%,有效应对高并发场景,值得收藏。

LiteProceed的博客 763

Yii2 页面缓存(PageCache)实战指南:用动作过滤器缓存整页输出

页面缓存(Page Caching)是 Yii2 框架中把**整张页面的渲染结果**存入服务端缓存、在后续请求中直接读取并返回的高层缓存方案,适用于文章列表、商品详情等“读多写少”的场景。本文以官方指南 [caching-page.md](https://link.gitcode.com/i/0e612c26d9b77d6de88ad1b6ffd0cf88) 为核心,结合 [PageCache 过

gitblog_00985的博客 945

awesome-yii2 缓存优化与性能调优:企业级应用实战经验

在当今快速发展的Web应用领域,性能优化已成为企业级应用成功的关键因素之一。awesome-yii2作为Yii2框架的优质资源集合,不仅提供了丰富的组件和扩展,更为开发者提供了全面的缓存优化与性能调优解决方案。本文将分享一系列实用的企业级应用实战经验,帮助你快速提升Yii2应用的响应速度和并发处理能力。 ## 为什么缓存优化对Yii2应用至关重要? Yii2作为一款高性能的PHP框架,本身已经

gitblog_00047的博客 538

yii mysql 缓存_Yii2 开启 Schema 缓存,提高性能。

通过Yii2 debug toolbar 发现有大量这种查询 SELECT kcu.constraint_name, kcu.column_name, kcu.referenced_table_name, kcu.referenced_column_name FROM information_schema.referential_constraints AS rc JOIN information_schema.key_column_usage AS kcu ON ( kcu.constr

qq_29973167的博客 775

Yii 2 缓存机制全览:从数据缓存、片段/页面缓存到 HTTP 缓存的分层性能优化指南

缓存是提升 Web 应用性能成本最低、见效最快的手段之一。本指南以 Yii 2 框架(当前仓库 [framework](https://link.gitcode.com/i/66a191d775ecbbce3df22ed5c9a54a38) 目录)的官方缓存文档为骨架,系统讲解 Yii 2 提供的四层缓存机制——服务端低层的数据缓存、中层的片段缓存与页面缓存,以及客户端侧的 HTTP 缓存,并结合

gitblog_00227的博客 8

Yii 2 性能优化实战指南:从 PHP 环境到数据库与缓存的系统调优

本篇技术指南以 Yii 2 框架官方文档《性能优化》为核心,系统梳理影响 Web 应用性能的关键因素,覆盖 PHP 运行环境、调试模式、缓存体系(含 Schema 缓存)、资源合并、会话存储、数据库查询、Composer 自动加载、离线任务处理与性能分析等全部调优维度。读完本文,你将掌握一套可直接落地到生产环境的 Yii 2 应用性能优化清单,并能结合框架源码理解每项优化的底层原理与适用场景。

gitblog_00984的博客 814
上一篇: php判断检测一个数组里有没有重复的值
下一篇: 实现订单系统
浮云且风吟
博客等级 码龄9年 48粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值