evista/pj-page-cache-red

基于Redis的页面缓存

安装: 148

依赖者: 0

建议者: 0

安全性: 0

星标: 1

关注者: 3

分支: 23

类型:wordpress-plugin

v0.1.52 2017-04-02 13:33 UTC

README

WordPress的全页缓存插件,基于Redis,非常灵活且快速。需要运行Redis服务器,Redis客户端包(目前仅支持cheprasov/php-redis-client),以及Composer

Latest Version on Packagist Build Status Total Downloads

要求

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