bnomei / kirby3-apcu-cachedriver
基于APCu的缓存驱动程序,具有垃圾回收和内存存储
Requires
- php: >=8.0
- ext-apcu: *
- getkirby/composer-installer: ^1.1
Requires (Dev)
- getkirby/cms: ^3.5
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^9.5
Suggests
- bnomei/kirby3-boost: Boost the speed of Kirby by having content files of pages (mem-)cached, with automatic unique ID, fast lookup and Tiny-URL.
- bnomei/kirby3-lapse: Cache any data until set expiration time
README
扩展了Kirby 3的基本APCu缓存驱动程序,增加了垃圾回收和内存存储
商业用途
支持开源!
此插件是免费的,但如果您将其用于商业项目,请考虑赞助我或捐款。
如果我的工作帮助您赚了一些钱,那么我觉得我可能也应该得到一点回报,对吧?
要善良。分享一点。谢谢。
- Bruno
安装
- 将 master.zip 解压为文件夹
site/plugins/kirby3-apcu-cachedriver
或 git submodule add https://github.com/bnomei/kirby3-apcu-cachedriver.git site/plugins/kirby3-apcu-cachedriver
或composer require bnomei/kirby3-apcu-cachedriver
原因
Memcached < 文件 < Redis < SQLite < APCu
Kirby自带对文件、Memcached和APCu缓存驱动程序的支持。APCu广泛可用且性能出色。它的缺点是,与SQLite或Redis相比,内存大小有限。
内存存储
通常,对同一缓存项目的每次调用,即使是同一HTTP请求中的重复调用,都会导致对APCu缓存的重复请求。使用此插件的内存存储,检索到的项目将被存储在当前HTTP请求的PHP数组中,并从那里返回,而不需要往返APCu。这可能会增加PHP脚本的总体内存使用量,但会显著加快重复调用。如果您不需要此行为,可以在设置中将其关闭。
垃圾回收
Kirby仅在缓存项目再次请求并被认为是过期的情况下,或者当缓存完全刷新时,才会删除过期的缓存项。这可能会导致长期过期的项目占用缓存中的内存。
默认的APCu实现没有活动垃圾回收,但只有在内存不足时才会删除过期的缓存项。这是一个完全可行的策略。此插件通过积极清除过期项目来最小化这种行为。
使用
缓存方法
$cache = \Bnomei\ApcuCache::singleton(); // or $cache = apcugc(); $cache->set('key', 'value', $expireInMinutes); $value = apcugc()->get('key', $default); apcugc()->remove('key'); apcugc()->flush();
基准测试
apcugc()->benchmark(1000);
apcugc : 0.026898145675659 file : 0.13169479370117
注意:这将创建和删除大量缓存文件和apcu条目
调试时无缓存
当Kirby的全局调试配置设置为true
时,将刷新完整的插件缓存,并且不会读取任何缓存。但是会创建条目。这将使您的生活更容易——请相信我。
如何使用ApcuGC与Lapse或Boost
您需要将lapse插件的缓存驱动程序设置为apcugc
。
site/config/config.php
<?php return [ 'bnomei.lapse.cache' => ['type' => 'apcugc'], 'bnomei.boost.cache' => ['type' => 'apcugc'], //... other options ];
设置内容文件缓存
使用Kirby 3 Boost来设置内容文件的缓存。
设置
依赖项
- PHP APCu扩展
免责声明
此插件“按原样”提供,不提供任何保证。自行承担风险使用,并在将其用于生产环境之前自行测试。如果您发现任何问题,请创建新问题。
许可
不建议在任何宣传种族主义、性别歧视、恐同、动物虐待、暴力或其他任何形式仇恨言论的项目中使用此插件。