kodus / file-cache
最小PSR-16缓存实现
2.0.0
2022-08-24 12:47 UTC
Requires
- php: >= 8.0
- psr/simple-cache: ^2||^3
Requires (Dev)
- cache/integration-tests: dev-master
- codeception/codeception: ^5
- codeception/module-asserts: ^3.0
Provides
README
此库提供了一个基于简单文件系统存储的最小PSR-16缓存实现。
这可以用于在您想要发货的项目无需依赖完整的缓存框架即可运行时,提供工作轻量级的启动。
策略
文件存储在指定的缓存文件夹中,具有两级子文件夹,以避免文件夹内文件数量的文件系统限制。 (这可能在十万个条目数内运行良好 - 如果您存储百万条目的缓存条目,则不应使用基于文件的缓存。)
为了减少存储开销并加快过期时间检查,文件修改时间将被设置为将来。 (文件创建时间戳将反映文件实际创建的时间。)
使用方法
请参阅PSR-16规范以了解API描述。
安全性
在生产环境中,请考虑为您的托管环境指定适当的构造函数参数$dir_mode
和$file_mode
- 默认值是一个典型的选择,但您可能需要根据需要调整系统上的权限。
垃圾收集
由于这是一个基于文件的缓存,因此您需要考虑与您的用例相关的垃圾收集。
此缓存实现不会在运行时自动进行垃圾收集,因为这会定期阻塞用户请求,并且跨文件系统的垃圾收集速度并不快。
公共方法cleanExpired()
将刷新过期条目 - 根据您的用例,考虑以下选项
-
对于具有非动态密钥的缓存条目(例如基于用户管理数据的主键、URL等),您可能不需要垃圾收集。每年手动清理文件夹一次可能就足够了。
-
对于具有动态密钥的缓存条目(例如会话ID或其他随机或伪随机密钥),您应设置一个cron作业定期调用
cleanExpired()
方法,例如每天一次。
对于具有数百万动态键的缓存条目,如前所述,您可能不希望使用基于文件的缓存。