inpsyde/wp-stash

WordPress 强大的对象缓存后端

安装次数: 10,109

依赖: 0

建议者: 0

安全: 0

星星: 51

关注者: 5

分支: 13

开放问题: 1

类型:wordpress-muplugin

v3.4.1 2024-08-09 12:19 UTC

This package is auto-updated.

Last update: 2024-09-09 12:28:31 UTC


README

WP Stash 是 StashPHP 和 WP 对象缓存插件之间的桥梁。它支持 APCu、Redis、SQLite、Memcached 和文件系统缓存,以及防潮保护和分组失效。

安装后,它将复制一个 object-cache.php 文件到 wp-content/ 目录,并将所有缓存调用委托给其 mu-plugin 文件夹。从那里,它将与 StashPHP 进行接口交互。

安装

此插件是一个 Composer 包,将以 wordpress-muplugin 的形式安装。因此,在尝试安装时有一些需要注意的事项。通常,MU 插件是单个 PHP 文件,有时还伴随一个包含更多代码的子文件夹。由于 WP-Stash 假设它位于一个子文件夹中,因此其根文件夹中包含许多其他与开发相关的文件。

为了使 WP 能够将 WP-Stash 作为 MU 插件识别,您必须执行以下操作之一

Composer

第一步,只需通过 Composer 需求此包

composer require inpsyde/wp-stash

由于此包将被安装在一个子文件夹中,WordPress 不会自动加载它。以下是一些解决方案

WP Starter

如果您正在使用酷炫的 WP Starter 包,那么一切将自动工作。它包含一个 MU-Loader,将负责加载 WP Stash。注意,您绝对不要使用 WPStarter 的直接插入功能在构建时复制 object-cache.php!WP-Stash 必须自行放置直接插入文件。如果您想触发 WP-Stash 创建直接插入文件,只需运行类似于 wp plugin list 的命令。

WP 必须使用插件加载器

WP Must-Use Plugin Loader 是一个独立的 Composer 包,将为您处理 mu 插件的加载。只需需求此包,然后按照链接中的使用说明进行设置。

没有 Composer

直接上传

您可以技术上通过将所有文件解压缩到 wp-content/mu-plugins/ 文件夹来使用 WP-Stash。然而,这种方法相当糟糕,我们强烈建议不要这样做。相反,请查阅 WordPress Codex 中的 MU 插件 以找到从文件夹中加载 mu 插件的解决方案。

最简单的解决方案是添加一个 wp-content/mu-plugins/wp-stash.php 文件,并在其中放入以下内容

<?php

require __DIR__ . '/wp-stash/wp-stash.php';

配置

您可以在 WordPress 实例的配置文件中全局配置 WP Stash。您可以设置缓存驱动和配置值。

有关驱动程序配置的信息,请参阅 StashPHP 文档

以下常量(或环境变量)可用于配置 WP Stash

WP_STASH_DRIVER - FQCN:您想使用的 Stash 驱动的类名。如果没有设置或无效,将回退到 Ephemeral(纯内存缓存,无持久性)。可用的驱动程序有

  • \Stash\Driver\Apc
  • \Stash\Driver\FileSystem
  • \Stash\Driver\Sqlite
  • \Stash\Driver\Memcache(不是 Memcached
  • \Stash\Driver\Redis
  • \Stash\Driver\Ephermal
  • \Stash\Driver\Composite

WP_STASH_DRIVER_ARGS - 字符串:驱动程序构造函数参数,作为序列化数组或JSON。

WP_STASH_IN_MEMORY_CACHE - 布尔值:如果启用,则保持缓存内存版本的同步。这可以提高单次请求的性能。默认值 true

WP_STASH_PURGE_INTERVAL - 整数:WP Stash 默认情况下会每12小时对配置的缓存驱动程序运行计划维护操作。您可以在此处配置不同的间隔。默认值 3600*12

WP_STASH_BYPASS - 布尔值:允许暂时禁用 WP-Stash 并回退到核心 WP 系统。

环境变量

如果您使用基于 Composer 的环境,如 WPStarter,您可能希望立即使用环境变量。以下是一些示例

使用 APC 进行缓存

WP_STASH_DRIVER=\Stash\Driver\Apc
WP_STASH_DRIVER_ARGS='{"ttl":3600}'

将缓存保存到 /var/www/cache 文件夹中的文件系统

WP_STASH_DRIVER=\Stash\Driver\FileSystem
WP_STASH_DRIVER_ARGS='{"path":"\/var\/www\/cache","dirSplit":1}'

将缓存保存到 localhost 上的 memcached 服务器

WP_STASH_DRIVER=\Stash\Driver\Memcache
WP_STASH_DRIVER_ARGS='{"servers":["memcached","11211"]}'

根本不进行持久缓存(缓存仅存在于脚本的生命周期内)

WP_STASH_DRIVER=\Stash\Driver\Ephermal

wp-config.php

define('WP_STASH_DRIVER',  '\Stash\Driver\Apc');
define('WP_STASH_DRIVER_ARGS', serialize(['ttl' => 3600]));

wp-cli

WP Stash 有以下 CLI 命令

wp stash flush:这是 wp cache flush 的改进版本。此命令确保通过 Web 服务器调用 wp_cache_flush(),而不是 CLI 进程(可能以不同的用户或配置运行)。这确保了与所有缓存后端的兼容性。

wp stash purge:一些驱动程序需要定期执行维护操作。例如,FileSystem 和 SQLite 驱动程序需要删除旧数据,因为它们无法自动执行此操作。虽然这会通过 WP cron 自动执行,但您可以使用此命令手动触发此过程。

确保您的持久缓存按预期工作

要测试您的持久缓存是否正常工作,您可以使用 WP-CLI。首先,使用您的用户登录到您的 WordPress 网站。现在在 WP-CLI 中运行以下命令

wp cache get {your-user-ID} users
(object) array(
   'ID' => '1',
   'user_login' => 'you',
   'user_pass' => '$P$BfWcDiF3YcFfnIMAGUmiYOuxD/6eaY0',
   'user_nicename' => 'you',
   'user_email' => 'you@yourdomain.com',
   'user_url' => 'https://yourdomain.com',
   'user_registered' => '2018-02-09 21:44:34',
   'user_activation_key' => '',
   'user_status' => '0',
   'display_name' => 'Your Name',
   'spam' => '0',
   'deleted' => '0',
)

这有一些限制,并且可能不会在服务器设置中正常工作,具体取决于 Web 服务器和您的控制台用户是否相同。

在这种情况下,您可以检查是否将常见暂时存储在缓存中。首先,删除所有暂时存储,以防万一还有一些剩余

wp transient delete --network --all
Success: No transients found.
Warning: Transients are stored in an external object cache, and this command only deletes those stored in the database. You must flush the cache to delete all transients.

现在清除缓存

wp stash flush

现在检查更新(以填充暂时存储)并请求缓存对象

wp core check-update
Success: WordPress is at the latest version.
wp cache get update_core site-transient
(object) array(
   'updates' => 
  array (
    0 => 
    (object) array(
       'response' => 'latest',
...

开发

此软件包包含一个包含完整 WordPress 安装的 DDEV 配置。

要开始,请运行

ddev start

然后使用以下命令安装 WordPress

ddev orchestrate

现在您可以访问 https://wp-stash.ddev.site/ 并登录

  • 用户:admin
  • 密码:admin

许可和版权

此存储库是免费软件,并根据 GNU 通用公共许可证第2版或(根据您的选择)任何更高版本发布。有关完整的许可信息,请参阅 LICENSE