找到以下包,它会自动点击我,使用标签。
https://github.com/swayok/alternative-laravel-cache
尽管在标签系统的其他地方,这是默认行为,
在 Laravel 中,默认情况下是不同的(使用 Memcached/Redis 时)。
例如:
Cache::tags(['tag1', 'tag2'])->get('tag-test1');
Cache::tags(['tag2', 'tag3'])->get('tag-test1');
Cache::tags(['tag2', 'tag4'])->get('tag-test1');
Cache::tags(['tag2'])->flush();
期望清除所有缓存,因为它包含相同的标记,
但是在 Laravel 中它根本不会命中缓存,相反,您需要再写 3 行来使这些相同的缓存无效。
这是为什么?
我的意思是,Laravel (Taylor) 选择这条路是有原因的,可能是性能和东西,但我不确定。
我想得到一个简单/准确的解释。谢谢你。
最佳答案
https://github.com/swayok/alternative-laravel-cache
确实是我的预期行为。例如,当构建一个包含三个产品一个类别的页面时,它将被标记为这三个产品和类别。如果任何产品发生更改,则需要刷新缓存。在 Laravel 中,我需要知道所有三个产品和类别才能刷新,这是不可能的。不明白为什么 Laravel 采取这种方法。
关于php - Laravel redis/memcached 缓存标签逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49448770/