yii 阅读 4960
Yii2 第2章 缓存

Yii2 第2章 缓存

2017-01-20 • lulubin

一、数据缓存

1.1、数据缓存之 CRUD

https://file.lulublog.cn/images/3/2022/08/Vk9kgQ429I9c3I4u3YcYX3nX22IUE6.png?sign=b721ddd13dd7bae4953663d7d3e64b9d&t=6af33f80

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

https://file.lulublog.cn/images/3/2022/08/deW8GFNa1IWN8JKhyhkZKCn8E2Ekkf.png?sign=51a498d17acd19ae580165745a5eaa94&t=6af33f80

1.3、数据缓存中依赖关系

https://file.lulublog.cn/images/3/2022/08/jKK1SI6j3h0J5Ki03I0H556mJ31T5z.png?sign=0fb504749d0c4807cf7f2fa19e458e62&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/I89GyrNGDJf8nmGUJ9ZlMN8d5ljnOg.png?sign=3ef57fcc45cb4c12c3973f0918287976&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/M0EfDN4EU6dFaz5LW0eD6fn6FlldFd.png?sign=4f81c9950ca3c427f101911a62bec927&t=6af33f80

二、片段缓存

2.1、片段缓存之使用

https://file.lulublog.cn/images/3/2022/08/ddDr4Xdz3Am0rak3DA63dagGLmR6X4.png?sign=faf08252120f3c29a299011b188387dd&t=6af33f80

2.2、片段缓存之设置

https://file.lulublog.cn/images/3/2022/08/ME9olloeZQ2FLv57VqOjVPQ5qLJH95.png?sign=ef1eebffb210cdc2ce526ee1efb55353&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/Ut7h5pu4hMMUpMH5daHzmpENDTp7Su.png?sign=b6395a5acc7e4e2dfbe654e9f76ae24a&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/dias9nNESYaZhIPEptSnpqr5Spepi2.png?sign=e8f0d7d9e2a30cbd2e86ddc031f8e7bb&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/vLYBQr9tylYLzDlliOER8BILOY8tj2.png?sign=aa6f3ab5a236cecbe32794397d37977e&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/Iw56wvAyWwKdd63ikDW5iwRzwaYciw.png?sign=2d5105edfd02a692860356fea92ca681&t=6af33f80

三、页面缓存

https://file.lulublog.cn/images/3/2022/08/M80DQ9M4qa1zSOqDd24DAQ4xSD1zxa.png?sign=fd6e45cae4d751a5bd2275ad9240c9ab&t=6af33f80

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

4.1、lastModified、ETag

https://file.lulublog.cn/images/3/2022/08/sKd03kRXXxar0dzRRZbBkkKf4jr4JX.png?sign=1c033e42f48408f31d193ae8cd5e7549&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/Ku40OuOOo00O0Za7U0hOoo70h2uTau.png?sign=80e24cdd031549562c0bbf435d6084b3&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/zn298EvQVGVNVHuceK58vVNGtnuGcK.png?sign=8b6e0778a19b9904b1bdc1e17ada9db2&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/jZqFpJmoMwQy8aMFg70X3RHFBMRfjx.png?sign=1c7ded75b74a1879b8dd5112f36b3d49&t=6af33f80

https://file.lulublog.cn/images/3/2022/08/hF7TT6hK3e9W92c03fkKP3C693h4L6.png?sign=6ab95c34649493ac4ea4b15d447f1116&t=6af33f80

4.2、实例

https://file.lulublog.cn/images/3/2022/08/D8vfli3xJILxktxcvCipI7s7P1pS1z.png?sign=d92bb2e0a60e750c0047c7b2e9aac4df&t=6af33f80

五、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

只对当前的请求有用