Yii2 第2章 缓存 Yii2 第2章 缓存

2017-01-20

一、数据缓存

1.1、数据缓存之 CRUD

https://file.lulublog.cn/images/3/2022/08/Vk9kgQ429I9c3I4u3YcYX3nX22IUE6.png

1.2、数据缓存之有效期设置

https://file.lulublog.cn/images/3/2022/08/deW8GFNa1IWN8JKhyhkZKCn8E2Ekkf.png

1.3、数据缓存中依赖关系

https://file.lulublog.cn/images/3/2022/08/jKK1SI6j3h0J5Ki03I0H556mJ31T5z.png

https://file.lulublog.cn/images/3/2022/08/I89GyrNGDJf8nmGUJ9ZlMN8d5ljnOg.png

https://file.lulublog.cn/images/3/2022/08/M0EfDN4EU6dFaz5LW0eD6fn6FlldFd.png

二、片段缓存

2.1、片段缓存之使用

https://file.lulublog.cn/images/3/2022/08/ddDr4Xdz3Am0rak3DA63dagGLmR6X4.png

2.2、片段缓存之设置

https://file.lulublog.cn/images/3/2022/08/ME9olloeZQ2FLv57VqOjVPQ5qLJH95.png

https://file.lulublog.cn/images/3/2022/08/Ut7h5pu4hMMUpMH5daHzmpENDTp7Su.png

https://file.lulublog.cn/images/3/2022/08/dias9nNESYaZhIPEptSnpqr5Spepi2.png

https://file.lulublog.cn/images/3/2022/08/vLYBQr9tylYLzDlliOER8BILOY8tj2.png

https://file.lulublog.cn/images/3/2022/08/Iw56wvAyWwKdd63ikDW5iwRzwaYciw.png

三、页面缓存

https://file.lulublog.cn/images/3/2022/08/M80DQ9M4qa1zSOqDd24DAQ4xSD1zxa.png

四、HTTP缓存:缓存在浏览器

4.1、lastModified、ETag

https://file.lulublog.cn/images/3/2022/08/sKd03kRXXxar0dzRRZbBkkKf4jr4JX.png

https://file.lulublog.cn/images/3/2022/08/Ku40OuOOo00O0Za7U0hOoo70h2uTau.png

https://file.lulublog.cn/images/3/2022/08/zn298EvQVGVNVHuceK58vVNGtnuGcK.png

https://file.lulublog.cn/images/3/2022/08/jZqFpJmoMwQy8aMFg70X3RHFBMRfjx.png

https://file.lulublog.cn/images/3/2022/08/hF7TT6hK3e9W92c03fkKP3C693h4L6.png

4.2、实例

https://file.lulublog.cn/images/3/2022/08/D8vfli3xJILxktxcvCipI7s7P1pS1z.png

五、yii2 缓存介质的介绍

5.1、缓存介绍

①、缓存

临时存储数据,将从数据库查询到的数据放在数据库、磁盘、内存中

②、读写速度

内存>磁盘>数据库

5.2、缓存介质

①、Apc缓存

单台服务器最快的数据缓存介质,将数据放在共享的内存块中

- 在单台Web服务器的内存中设置一定的内存大小,用于Apc控制下的共享内存块

- 服务器下有两个应用:www.luluyii.cn和mysql.luluyii.cn,它们共享着Apc内存块

- 注意:多个应该key冲突:比如有两个相同key,但是value不一样时,会冲突;

- 解决方法:为每个key添加项目名的前缀,比如www_a、mysql_a

②、MemCache

多台服务器最快的数据缓存介质,将数据分布式的存储在服务器内存中

- yii2配置MemCache:'cache'=>['class'=>'yii\caching\MemCache','servers'=>['host'=>'127.0.0.1','port'=>'80','weight'=>100]],'keyPrefix'=>'www_']

- 解释:weight指权重,权重越大,该应用的内存越大;keyPrefix指存储数据的前缀,一般用项目名称作为前缀

- 案例:在前台某控制器中设置cache数据:yii::$app->cache->set('arr','a'=>'20');在前后台均可以通过\yii::$app->cache->get('arr')获取到名为arr的数据;

③、FileCache

文件缓存,主要存储一些大的string

- yii2文件缓存目录:runtime/cache

- 文件缓存作用域:单个web应用,比如yii2前后台的文件缓存相互独立

- yii2文件缓存配置:在应用主件中配置'cache'=>['class'=>'yii\caching\FileCache']

④、ArrayCache

只对当前的请求有用

阅读 3113