felixarntz / wp-psr-cache
WordPress 的对象缓存实现,作为 PSR-6 和 PSR-16 缓存库的适配器。
Requires
- php: ^7.0
- composer/installers: ~1.0
- psr/cache: *
- psr/simple-cache: *
Requires (Dev)
- phpunit/phpunit: 6.2.*
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-09-06 09:59:56 UTC
README
WP PSR Cache
WordPress 的对象缓存实现,作为 PSR-6 和 PSR-16 缓存库的适配器。
PSR-6 和 PSR-16 是什么意思?
PSR-6 和 PSR-16 是由 PHP-FIG 组织制定的标准。这些标准在所有类型的 PHP 项目中普遍使用(不幸的是,WordPress 是一个例外),由于这个库充当适配器,现在您可以使用任何兼容的缓存库与 WordPress 一起使用。流行的例子包括 Symfony Cache Component 或 Stash。
功能
- 可以使用任何 PSR-6 或 PSR-16 缓存实现
- 可以单独指定持久和非持久缓存实现
- 支持一次性读取/写入/删除多个缓存键
- 只有当值不在非持久缓存中时才检查持久缓存
- 完全支持多站点,包括站点和网络切换
- 允许注册更细粒度的缓存实现以控制每个缓存组
如何安装
使用 Composer(例如通过使用 Bedrock)管理您的项目时,需要将此库作为依赖项。您还必须安装实际的 PSR-6 或 PSR-16 缓存实现。
安装后,您需要将 includes/object-cache.php
文件移动到您的 wp-content
目录中。如果您愿意,也可以通过向您的项目 composer.json
中添加以下内容来自动化此过程:
"scripts": {
"post-install-cmd": [
"cp -rp web/app/mu-plugins/wp-psr-cache/includes/object-cache.php web/app/object-cache.php"
]
}
然后,将 object-cache.php
文件中的内联注释替换为您希望使用的类的实际实例化。您需要提供两个实现,一个用于持久缓存,另一个用于非持久缓存。
为了避免多个 WordPress 安装访问相同的缓存服务时的冲突,建议在您的 wp-config.php
文件中定义一个唯一的 WP_CACHE_KEY_PREFIX
常量。
示例
以下示例使用 symfony/cache
库,因此您必须在 composer.json
中要求它。然后,它使用该库的 Memcached 实现作为持久缓存以及其数组存储作为非持久缓存。
<?php /** * Object cache drop-in * * @package LeavesAndLove\WpPsrCache * @license GNU General Public License, version 2 * @link https://github.com/felixarntz/wp-psr-cache */ use LeavesAndLove\WpPsrCache\ObjectCacheService; use Symfony\Component\Cache\Simple\MemcachedCache; use Symfony\Component\Cache\Simple\ArrayCache; defined( 'ABSPATH' ) || exit; ObjectCacheService::loadApi(); /** * Defines and thus starts the object cache. * * @since 1.0.0 */ function wp_psr_start_cache() { $memcached = new Memcached(); $memcached->addServer( '127.0.0.1', 11211, 20 ); wp_cache_start( new MemcachedCache( $memcached ), new ArrayCache() ); } wp_psr_start_cache();
如果您希望有更细粒度的控制并且使用多个持久和非持久缓存,可以使用 LeavesAndLove\WpPsrCache\CacheSelector\CacheSelector
接口注册额外的缓存适配器。可以通过 wp_object_cache()->getSelector()
轻松获取对象缓存使用的实现。
要求
- PHP >= 7.0
贡献者
感谢以下这些可爱的人 (emoji key)
此项目遵循 all-contributors 规范。欢迎任何形式的贡献!