框架的Cache服务是简单的数据文件缓存。
它的方法支持PSR-16。缓存的工作原理如下:
数据以唯一键存储于缓存中,并指定ttl(时间生存)以秒为单位。
从缓存创建开始的这段时间内,使用此键的缓存请求会返回缓存数据,数据保持不变。
可随时按键或全部清除缓存。
如果缓存未创建、清除或过期,将为指定时间创建新缓存。
内置服务实现支持主要的PHP数据类型——字符串、数值、数组、对象(通过序列化)。
如果需要更高级的缓存功能,可以在容器中添加另一个实现,替换或补充当前的实现。 这可以是github.com/symfony/cache组件。
在控制器(以及从Hleb\Base\Container继承的所有类)中使用Cache的方法,示例通过键获取缓存:
在应用代码中从Cache获取缓存的示例:
还可以通过接口Hleb\Reference\Interface\Cache使用依赖注入访问Cache对象。
为简化示例,后续将仅使用Hleb\Static\Cache访问。
这种缓存方法的最大挑战(除失效外)是选择一个能唯一标识缓存数据的唯一键。
例如,如果您正在缓存从数据库获取的特定查询的数据,则键应包含有关该查询的信息,以及数据库名称,如果类似的查询可能在不同数据库中执行。
在此示例中,将以一分钟的过期期将测试验证结果添加到缓存中。当然,在实用条件下,选择缓存数据时,应选择生成比使用缓存更耗费资源的数据。
这里使用了 get()、set() 和 has() 方法,分别用于根据键获取、添加到缓存和检查其存在性。
这三个方法被一个名为 getConform() 的方法所取代,该方法使用 Closure 函数来获取数据,如果在缓存中找不到它们。
使用外部上下文的闭包函数示例:
整个框架的缓存通过 clear() 方法清除,但对大量缓存要谨慎使用。此调用应相对不频繁使用,也可以通过控制台命令来完成:
$php console --clear-cache
清除整个缓存只会影响缓存的模板数据和由 Cache 服务添加的框架数据。 TWIG 模板引擎有自己的缓存实现,并且提供了一个单独的控制台命令来清除它。
如果需要按某个键删除缓存,可以使用 delete() 方法。
为了让框架自动跟踪缓存的最大大小,需要在 /config/common.php 文件中配置 'max.cache.size' 选项。
该值以兆字节为单位的整数表示。
由于缓存文件不均匀分布,这将是缓存文件目录最大大小的大致跟踪。
如果不发生缓存,请确保在 /config/common.php 文件中启用 'app.cache.on' 设置;建议在调试模式下禁用它。
← Response 日志记录 →