Laravel缓存留下空文件夹


Laravel Cache leaving empty folders

我使用缓存来保存移动应用程序用户的登录会话。我在Laravel 4。每当有人登出时,我使用:

清空他们的会话令牌

Cache::forget($token);

问题是这留下了两个空文件夹,这些文件夹最初是为保存缓存文件而创建的。我担心在app/storage/cache文件夹中有很多空文件夹会减少读取缓存数据的时间。

当我运行cache::forget函数时,我如何擦除缓存文件的两个父文件夹?

你不必担心。当访问会话数据时,Laravel并不扫描所有的文件夹,而是确切地知道会话存储在哪个文件夹和子文件夹中,因为它们的名称等于会话密钥的第一个和第二个2个字符。这样做是为了优化会话存储,因为根据操作系统的不同,可能存在单个文件夹中可以存储的文件数量的限制。

另一方面,每次有人注销时删除这些文件夹会有影响,因为Laravel首先需要检查文件夹是否不包含任何其他会话,这将导致额外的I/O操作。

最后,由于文件夹名称是由会话密钥的2个字符创建的,并且会话密钥仅包含十六进制数字,因此文件夹的数量不会超过256(16*16)。