13. Yii 2.0 缓存介质

Yii 2.0 框架对缓存的处理支持很多种方式,处理缓存的类文件所在的目录为: \vendor\yiisoft\yii2\caching,这里对一些常用的缓存处理类文件,作简单地说明:
  • Cache.php:缓存介质的父类(基类)
  • ApcCache.php: apc缓存,单台服务器最快的缓存介质,将数据存放在共享内存块中
  • DbCache.php: 数据库缓存,将数据存放在数据库中
  • FileCache.php: 文件缓存,将数据存放在磁盘文件中,主要存储很大的字符串(如静态页面),作用域为当前模块。
  • MemCache.php:memcache缓存,多台web服务器最快的缓存介质,将数据存放在分布式的memcache缓存服务器的内存中

1. 文件缓存
准备工作:修改 Yii 2.0 的配置文件中的组件配置,将 cache 组件指向   FileCache 即可
数据的保存位置:需要缓存的数据会保存在当前模块下的  runtime/cache 目录中,以磁盘文件形式存在。
作用域:只对当前模块有效

以 Yii 2.0 高级版为例。
首先,查看项目的公共配置文件  /advanced/common/config/main.php,可看到默认配置为:
这说明,项目的前台和后台模块都默认使用文件缓存。

在前台模块的控制器目录  /advanced/frontend/controllers 中新建一个控制器文件 CacheController.php 来测试缓存,代码如下:
然后,在浏览器地址栏,访问  http://yii.frontend.com/?r=cache/index (我已配置好虚拟主机),查看效果。
之后,可以在文件缓存目录  /advanced/frontend/runtime/cache  中查看到相应的缓存文件。
可发现,前台模块写入的文件缓存是存放在前台模块的缓存目录中的,故文件缓存的作用域为当前模块,其他模块无法访问。

2. apc 缓存
准备工作: web 服务器中必须先安装 php 的 apc 扩展,然后再来修改 cache 组件的指向。
数据的保存位置:当前web服务器的共享内存块中
作用域:对当前web服务器中的所有项目都有效(如果单台web服务器上有多个项目,必须作好 key 的区分,以防止数据被覆盖)

3. memcache 缓存
准备工作:web 服务器上必须先安装 memcache 服务器 和 php 的memcache 扩展,然后再来修改 cache 组件的指向。
数据的保存位置:memcache 服务器 管理的内存中,可配置多个 memcache 服务器。
作用域:对多台web服务器中的项目都有效。(必须作好 key 的区分,可以用前缀来区分)

以 Yii 2.0 高级版为例。
修改项目的公共配置文件  /advanced/common/config/main.php,代码如下:
然后直接访问  http://yii.frontend.com/?r=cache/index,查看效果。

4. redis 缓存
Yii 2.0 默认是没有处理 redis 缓存的类文件,但我们可以参考  http://www.yiichina.com/tutorial/602 进行设置,这种方式是通过 socket 连接来操作 redis 的,故不需要安装 php 的 redis 扩展。
另外一种方法,是安装 php_redis 扩展,然后按照该扩展的使用手册,自行封装一个操作 redis 的组件类文件。
不管哪种方法,都必须先安装 redis 服务器。

你可能感兴趣的:(缓存,yii)