原创| 开发动态| 一个月前| 阅读 138 次 | 5赞同 0反对
概述:在板砖才开始上手TP5的时候,这个小东西完全经验着我了,各种助手方法太方便了,cache方法也不例外,但是随着开发经验的丰富才发现,很多官方的原生方法并不是我想象的这样玩儿的。
在开始深入Tp5缓存用法之前,我先来回顾一下常见的简便用法:
Cache::set('name',$value,3600); //缓存的原装用法 // 缓存的助手方法用法 $options = [ 'type' => 'File', 'expire' => 0, 'path' => APP_PATH . 'runtime/cache/', ]; cache($options); cache('name', $value, 3600); var_dump(cache('name')); cache('name', NULL); cache('test', $value, $options); // 缓存的进阶用法 Cache::tag('tag')->set('name1','value1'); Cache::set('name1','value1'); Cache::tag('tag',['name1','name2']); Cache::clear('tag');在上述3种TP5缓存的用法里,更多新人会使用到前两种,读取都很方便。
但是如果你的缓存量有1G怎么办?
很多同学可能想着不可能吧,我的网站一天流量不过100IP,内容不到十万级别怎么可能有这么多缓存呢,而且还有2小时自动过期的机制呢!
板砖提出这个问题是因为曾经面领着整个系统缓存还真的超过了1G,然而没有特别的缓存清除机制,导致为了临时修正一个缓存错误不得不清除所有缓存,这个对服务器来说好像也不是什么大事儿,但是从严谨的态度来说这个机制很不好。
因此,板砖小小调整了一下缓存助手,助手函数放在common.php中,大家可以围观:
/** * 为了预防cache出错,做的判断 * @param unknown tag前缀 * @param unknown 名称 * @param string $value 当不写value的时候是获取,写的时候是赋值 * @return mixed|\think\cache\Driver|boolean|NULL */ function dcache($tag, $name, $value = '', $outtime = 3600) { if (config('cache_status') == 0) { return null; } try { if ($value == '') { return cache($name); } if ($tag) { return Cache::tag($tag)->set($name, $value, $outtime); } return cache($name, $value, $outtime); } catch (Exception $e) { return null; } } // 清除分类缓存方法 Cache::clear(CACHE_ARTICLE);本方法中可以根据配置确认是否缓存,在缓存中强制设置tag,在清除缓存的时候就可以根据tag做分类缓存清除,相对来说逻辑严密一点点。
本频道需要登陆后才能评论,请登录