咨询热线:18076568990、0755-25823180

[求助] ShoWT多缓存方式开启实例分享eAccelerator 、memcache 和 xcache

4728 2 yiyue 发表于 2015-7-24 14:17:16
ShoWT商城系统可以对数据进行多种形式缓存,包括文件缓存、共享内存缓存和数据表缓存。
目前已支持的内存缓存包括apc 、eAccelerator 、memcache 和 xcache。系统由Cache缓存类(位置:/framework/cache/cache.php)
统一进行缓存操作,由Cache::getInstance方法完成缓存类型实例化:

//取得memcache缓存实例

$obj_cache = Cache::getInstance('memcache');

//取得xcache缓存实例

//$obj_cache = Cache::getInstance('xcache');

//取得file缓存实例

//$obj_cache = Cache::getInstance('file');


//缓存赋值,键 -> 值:uid -> 1000

$obj_cache->set('uid',1000);

//读取缓存

$obj_cache->get('uid');

//删除缓存

$obj_cache->rm('uid');

系统需要将部分常用表信息(如基本配置表、商品分类表、店铺分类表、快递表、SEO表等)生成缓存,为了便于操作,系统对这些表的缓存处理封装到专有的cache模型中,使用Model('cache')->call(表名) 即可得到符合缓存格式的表信息。
//取得SEO缓存信息
Model('cache')->call(‘seo’)
//系统将查询seo表并返回数组
为了方便对缓存的操作,系统新增了H和F两个快捷方法,H方法对缓存类操作再次进行封装。
如取得系统cache/setting.php缓存信息:
H('setting');
内部执行过程为:首先取得file缓存实例
$obj_cache = Cache::getInstance('file')
判断操作类型(删除缓存?、缓存赋值?缓存读取?此处是取得缓存),然后执行
$obj_cache->get('setting');
取得缓存内容,至此执行完毕。

使用H方法将setting表信息生成到文件缓存:
H('setting',true,'file');
内部执行过程为:首先取得file类型缓存实例,
$obj_cache = Cache::getInstance('file')
判断操作类型(删除缓存?、缓存赋值?缓存读取?此处是删除缓存),然后执行
$obj_cache->rm('setting');
删除原有setting缓存,然后实例化cache模型并执行_setting方法来重新取得最新的setting表中的内容,
$list = Model('cache')->call(‘setting’);
使用set方法写入缓存
$obj_cache->set($key, $list, null,$expire);
最后返回true,至此缓存生成成功。
F 快捷方法也可以操作缓存,但F只是一种快速度读、写文件缓存的方法,不可用于内存缓存的操作,F方法不能直接将数据表内容生成缓存,只可将PHP中已经存的内容(如数组、字符串等)生成到文件缓存,在读取文件缓存时,F效率更高,因为它不需要实例化cache对象。
F('setting');    //取得setting缓存
F('setting',$data);    //将$data数组生成到setting文件缓存

欢迎大家提意见

点评

谢谢楼主提供,大家应该要会学这缓存,提高网站速度很有帮助。  发表于 2015-7-28 19:54

评分

参与人数 1金钱 +50 收起 理由
link78 + 50 很给力!

查看全部评分

hnsyliwei 发表于 2015-8-25 17:12:19
已收藏,有空再试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

推荐贴子

联系我们

产品及方案咨询:18076568990、0755-25823180

电子邮箱:web@shopwt.com、客服微信:shopwtcom

公司地址:深圳市罗湖区人民南路3002号国贸大厦B座1608楼

  • 官方公众号

  • 微信客服