evista / pj-page-cache-red
基于Redis的页面缓存
Requires
- php: ^7.0
- cheprasov/php-redis-client: ^1.6
- johnpbloch/wordpress: ^4.7
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-04 23:54:55 UTC
README
WordPress的全页缓存插件,基于Redis,非常灵活且快速。需要运行Redis服务器,Redis客户端包(目前仅支持cheprasov/php-redis-client),以及Composer
要求
Redis服务器
sudo apt-get install redis-server
这个原始包的分支正在积极重构,以使用Redis包代替Redis PECL扩展,并添加一些测试覆盖率。我最重要的计划是添加一个接口来提示当前的依赖注入,并添加更多测试。
确保您的Redis服务器有足够的内存分配来存储您的缓存页面。该插件使用gzip压缩缓存页面以降低内存使用。我们建议至少分配16 mb专门用于页面缓存。根据您的访问量增加。我们还建议禁用将Redis缓存刷新到磁盘,以及allkeys-lru
驱逐策略,以确保服务器可以通过驱逐较旧的缓存页面为新缓存页面腾出空间。以下是redis.conf文件的一个示例提取
maxmemory 16m
maxmemory-policy allkeys-lru
别忘了在修改配置文件后重启Redis服务器。
安装WordPress插件
通过composer安装插件然后激活它。它将在wp-contents文件夹中添加一个名为advanced-cache.php文件的符号链接
composer require evista/pj-page-cache-red
在WordPress wp-config.php文件中启用页面缓存,使用常量
define( 'WP_CACHE', true );
define('REDIS_CACHE', true);
设置一些重要的Redis选项(两者都有默认值)
define('REDIS_CACHE_TTL', 3000); define('REDIS_DB', 10); define('REDIS_HOST', getenv('REDIS_HOST') ?: '127.0.0.1'); define('REDIS_PORT', getenv('REDIS_PORT') ?: 6379);
尝试在隐身模式下访问您的网站或使用cURL,您应该看到X-Pj-Cache-头
curl -v https://example.org -o /dev/null
< X-Pj-Cache-Status: hit
就这样!
清除缓存
默认情况下,此插件将在发布或更新帖子(页面、cpt)时过期,包括主页和任何RSS源。您还可以选择在某些其他事件中过期某些URL或缓存标志。例如
// Expire cache by post ID (argument can be an array of post IDs):
Redis_Page_Cache::clear_cache_by_post_id( $post->ID );
// Expire cache by URL (argument can be an array of URLs):
Redis_Page_Cache::clear_cache_by_url( 'https://example.org/secret-page/' );
// Expire cache by flag (argument can be an array):
Redis_Page_Cache::clear_cache_by_flag( array( 'special-flag' ) );
等等,标志是什么东西?
Redis页面缓存为每个缓存项存储一组标志。这些标志允许插件在刷新时更好地定位缓存条目。例如,单个帖子可以有多个URL(缓存桶、请求变量等),因此可以有多个缓存键
https://example.org/?p=123
https://example.org/post-slug/
https://example.org/post-slug/page/2/
https://example.org/post-slug/?show_comments=1
这些URL将具有唯一的缓存键和内容,但Redis页面缓存将用帖子ID标记它们,因此如果知道标志,可以轻松清除这三个条目
$post_id = 123;
$flag = sprintf( 'post:%d:%d', get_current_blog_id(), $post_id );
Redis_Page_Cache::clear_cache_by_flag( $flag );
您也可以在请求中添加自己的自定义标志
// Flag all single posts with a tag called my-special-tag:
if ( is_single() && has_tag( 'my-special-tag' ) ) {
Redis_Page_Cache::flag( 'my-special-tag' );
}
// And whenever you need to:
Redis_Page_Cache::clear_cache_by_flag( 'my-special-tag' );
请注意,所有清除缓存的方法默认情况下都会过期(但不删除)缓存。如果在支持后台缓存再生的环境中运行,过期的标志会在向访客提供陈旧副本的同时触发后台再生。如果这不是期望的行为,可以在清除缓存方法中使用可选的$expire参数(设置为false)来强制删除标志/URL。
支持
如果您需要安装和配置此插件的帮助,请随时通过电子邮件联系我们: sera.balint@e-vista.hu。