modmore/revolution-cache

MODX Revolution Cache Provider 访问的 PSR-6 缓存实现。

2.0.0 2022-10-22 21:59 UTC

This package is auto-updated.

Last update: 2024-09-23 02:36:51 UTC


README

MODX Revolution Cache Provider 访问的 PSR-6 缓存实现。

此功能可用于针对 PSR-6 缓存标准编写自定义应用程序代码,同时与标准 MODX 2.2+ 缓存管理器集成。这提供了访问 MODX 提供的不同缓存实现(如文件/memcached 等),并通过 MODX 系统设置进行分区配置。

RevolutionCache 为 Commerce 开发,但已提取为独立的 composer 包,以便他人受益。

安装

通过 Composer 安装 RevolutionCache

composer require modmore/revolution-cache

许可证

MIT

用法

您可以在此处了解有关 PSR-6 缓存接口标准的更多信息

以下是一个简单示例,说明如何使用此适配器。

require_once '/path/to/vendor/autoload.php';

$pool = new \modmore\RevolutionCache\Pool($modx);

// Do some cache stuff
$item = $pool->getItem('my_value');
if ($item->isHit()) {
    echo 'Your number is ' . $item->get() . ' and was loaded from cache.';
}
else {
    $value = mt_rand(1, 9999);
    $item->set($value);
    if ($pool->save($item)) {
        echo 'Your number is ' . $value . ' and has been stored in the cache.';
    }
    else {
        echo 'Your number is ' . $value . ' but could not be written to cache';
    }
}

要使用除 default 之外的分区,您可以在创建 $pool 实例时将其指定为第二个选项

$pool = new \modmore\RevolutionCache\Pool($modx, 'my_custom_partition');

构造函数上的第三个 $options 属性可以用于指定 xPDOCache 选项,如默认过期日期、缓存处理程序和缓存格式,但建议通过 MODX 系统设置进行配置。

注意

  • 此缓存实现不支持延迟保存:$pool->saveDeferred()$pool->save() 相同,且 $pool->commit() 总是 true。
  • 此实现不支持 PHP-Cache 项目扩展的 PSR-6,如标签、命名空间或层次结构。
  • 此实现支持类似 PHP-Cache 项目的命名空间 的功能,通过支持 MODX 中称为 Cache PartitionsCache Providers 的内容。在创建 Pool 实例时,您将分区名称作为第二个参数提供。不同的分区可能具有自己的默认过期时间、缓存驱动程序和存储格式。这些通常在 MODX 系统设置中配置,但也可能通过构造函数的第三个 $options 属性传递。
  • modCacheManager 支持目录(如 users/10/messages)的缓存键,但是 / 是 PSR-6 的保留字符,因此您不能使用此缓存实现。相反,您可以使用不同的分区。

测试

此实现遵循 PSR-6 规范,并通过 PHP-Cache 项目提供的 PSR-6 集成测试 进行测试。

要运行这些测试或为 RevolutionCache 贡献

  1. 安装 MODX
  2. 在此项目的根目录中创建一个 config.core.php 文件,指向 MODX 核心文件夹。config.core.sample.php 中有一个示例。
  3. 确保使用 composer install 安装依赖项。
  4. 从项目根目录运行 phpunit