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"); 