bnomei / kirby3-apcu-cachedriver

基于APCu的缓存驱动程序,具有垃圾回收和内存存储

1.0.1 2022-12-05 12:02 UTC

This package is auto-updated.

Last update: 2024-09-09 18:33:49 UTC


README

Release Downloads Build Status Coverage Status Maintainability Twitter

扩展了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扩展

免责声明

此插件“按原样”提供,不提供任何保证。自行承担风险使用,并在将其用于生产环境之前自行测试。如果您发现任何问题,请创建新问题

许可

MIT

不建议在任何宣传种族主义、性别歧视、恐同、动物虐待、暴力或其他任何形式仇恨言论的项目中使用此插件。