bnomei / kirby3-php-cachedriver

基于PHP的Cache-Driver

2.0.0 2022-12-09 18:38 UTC

This package is auto-updated.

Last update: 2024-09-09 23:06:01 UTC


README

Release Downloads Build Status Coverage Status Maintainability Twitter

Elephant - 为Kirby 3提供高性能的PHP Cache Driver

商业用途


支持开源!

此插件是免费的,但如果您将其用于商业项目,请考虑赞助我或捐款。
如果我的工作帮助您赚了一些钱,那么我觉得我可能也应该得到一点回报,对吧?

善良。分享一点。谢谢。

—— Bruno
 

安装

  • 解压 master.zip 为文件夹 site/plugins/kirby3-php-cachedriver
  • git submodule add https://github.com/bnomei/kirby3-php-cachedriver.git site/plugins/kirby3-php-cachedriver
  • composer require bnomei/kirby3-php-cachedriver

使用

缓存方法

$cache = \Bnomei\PHPCache::singleton(); // or
$cache = elephant();

$cache->set('key', 'value', $expireInMinutes);
$value = elephant()->get('key', $default);

elephant()->remove('key');
elephant()->flush();

缓存文件

所有数据都在PHP脚本生命周期的最后写入。这不会计入您的脚本执行时间,但例如,当您在每次请求中更改缓存中的值时,每次都要写入这个大文件可能会证明效率低下。此外,将根据mono_dump设置在脚本执行期间写入增量更新。缓存的增加也将写入临时文件,以提高缓存稳定性。

数据序列化

此插件默认使用简单的序列化逻辑,这很快,但只能序列化原始数据类型、闭包、具有toArray()-方法的对象(如Kirby\Cms\FieldKirby\Toolkit\Obj)。这对于大多数用例应该足够。如果您需要更广泛的支持,请将bnomei.php-cachedriver.serialize设置为json,这将编码和解码您的数据为json,然后再将其存储。这会慢一点,但可以确保您的数据只包含原始类型,而无需在缓存之前手动序列化它。

OPCache

确保 OPCache配置 为从缓存中无延迟地加载PHP文件。您很可能会在user.ini或类似文件中设置这些值!如果您不设置这些值,您可能会从由OPCache缓存的PHP文件加载过时的数据,而不是从磁盘加载您想要的正确数据。

opcache.enable=1
opcache.enable_cli=0 # default is 0, leave it like that
opcache.validate_timestamps=1
opcache.revalidate_freq=0 # default is 2, 0 => on every request

感谢Al帮助我获取这些配置值。

基准测试

elephant()->benchmark(1000);
php : 0.03383207321167  
file : 2.3811981678009

注意:这将创建和删除大量缓存文件和php-cache文件

调试时无缓存

当Kirby的全局调试配置设置为true时,完整的插件缓存将被清除,并且不会读取任何缓存。但条目将被创建。这将使您的生活更加轻松——相信我。

如何使用Elephant与Lapse或Boost一起使用

您需要将lapse插件的缓存驱动设置为php。请注意,mono模式不适合并发写入。

site/config/config.php

<?php
return [
    'bnomei.lapse.cache' => ['type' => 'php'],
    'bnomei.boost.cache' => ['type' => 'php'],
    //... other options
];

设置内容文件缓存

使用Kirby 3 Boost来设置内容文件的缓存。

设置

免责声明

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

许可证

MIT

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