关于缓存标签的问题

浏览:2157 发布日期:2017/04/14
5.0.0 - 严重 - 未处理
1:clear清理的问题        Cache::set('a',0);
        Cache::tag('t')->set('a',1);
        Cache::tag('t')->set('b',1);
        Cache::clear('t');
        dump(Cache::tag('t')->get('a'));
        dump(Cache::tag('t')->get('b'));
返还的结果是 'a' = 1; 'b' = false;
说明缓存'a'没有被打上标签.
所以:Cache::tag('tag')->set('name1','value1'); 只能对新的缓存进行打标签,以上的例子需要在clear之前使用:Cache::tag('t',['a']);才能真正给缓存'a' 打上标签,clear才能把'a','b'都清理.

2:has的问题        Cache::set('a',0);
        dump(Cache::tag('t')->has('a'));
        dump(Cache::tag('t')->get('a'));
设置了一个缓存,但是并未打标签,可是通过以上的dump我们发现可以获取到缓存,但是其实做clear的话 根本没有效果.其实原理同上.

查看了一下源码,发现
1:Cache::tag('tag')->set('name1','value1');的操作确实只有在第一次设置的缓存会打上标签,不知道为什么其他的情况下不能打标签呢?
2: Cache::tag("tag")->has,get,inc,dec等缓存操作都没有判断是否有标签的操作,所以当Cache::tag("tag")->has("name");返回为true的时候,并不能说明该缓存是有"tag"标签的效果只不过等同于Cache::has("name");
评论(
后面还有条评论,点击查看>>