alleyinteractive/wp-page-cache-control

控制和管理多个托管提供商的页面缓存。

v0.1.3 2024-03-11 15:15 UTC

README

Coding Standards Testing Suite

控制和管理多个托管提供商的页面缓存。

安装

您可以通过Composer安装此包

composer require alleyinteractive/wp-page-cache-control

该插件支持以下托管提供商及其各自的页面缓存系统

插件将尝试检测正在使用的缓存系统,并将加载相应的提供程序类。它还可以通过返回提供程序类字符串的 wp_page_cache_control_provider 钩子来控制。

插件的主要目标是解决多个托管提供商之间常见的页面缓存控制需求。它并不是针对所有页面缓存控制需求的完整解决方案。如果您有插件无法满足的需求,请提交问题或拉取请求。

使用方法

该插件支持后端页面缓存控制,包括TTL、绕过页面缓存、用户分区和从页面缓存中清除。它还支持前端分区。

使用方法:后端

在WordPress中激活插件,根据需要使用以下方法

控制当前请求的生存时间(TTL)

wp_page_cache_control()->ttl( 3600 );

禁用当前请求的页面缓存

wp_page_cache_control()->disable_cache();

禁用当前用户的页面缓存

禁用当前用户的页面缓存将导致该用户绕过当前和后续请求的页面缓存。这对于测试或对登录用户非常有用。

wp_page_cache_control()->disable_cache_for_user();

// enabling it again via:
wp_page_cache_control()->enable_cache_for_user();

页面缓存分区

有关更多信息,请参阅页面缓存分区

wp_page_cache_control()->register_group( 'special-user-group' );

// Add the current user to the group (only needs to be done once).
wp_page_cache_control()->set_group_for_user( 'special-user-group', 'segment' );

清除特定URL

wp_page_cache_control()->purge( home_url( '/example/' );

清除帖子或术语

wp_page_cache_control()->purge_post( $post_id );

wp_page_cache_control()->purge_term( $term_id );

清除整个页面缓存

警告:这将清除整个页面缓存。这是一个危险的操作,应谨慎使用。

wp_page_cache_control()->flush();

页面缓存分区

当您想要对不同用户显示不同的页面响应时,请使用页面缓存分区。例如,您可能希望向登录用户显示与未登录用户不同的页面版本。或者您可能希望隐藏来自特定国家的用户的广告。页面缓存分区允许您以高效的方式执行此操作。

注册一个组

要注册一个组,请使用 register_group() 方法

wp_page_cache_control()->register_group( 'special-user-group' );

组名必须是唯一的,并且只能包含字母数字字符、破折号和下划线。

将用户添加到组中

要将用户添加到组中,请使用 set_group_for_user() 方法

wp_page_cache_control()->set_group_for_user( 'special-user-group', 'segment' );

第二个参数允许您指定组内的一个分区。例如,组可以是 "已登录" 且分区可以是 "数字订阅者"。您也可以将不同的用户添加到 "已登录" 组中,分区为 "印刷订阅者",以向印刷订阅者显示不同的页面版本。

注意:一旦添加,用户目前不能从组中移除。如果您需要从组中移除用户,您可以将其添加到同一组的另一个分区中。

检查用户是否在组或分区中

要检查用户是否在某个组或段中,请使用is_user_in_group()方法

wp_page_cache_control()->is_user_in_group( 'special-user-group' );

wp_page_cache_control()->is_user_in_group( 'special-user-group', 'segment' );

测试标题

该插件支持模拟通过插件发送的标题的发送,以进行测试。要启用此功能,请调用以下代码

use Alley\WP\WP_Page_Cache_Control\Header;

Header::fake();

启用后,您可以使用以下方法通过Alley\WP\WP_Page_Cache_Control\Concerns\Tests_Headers特性来测试发送的标题

namespace Alley\WP\My_Plugin\Tests;

use Alley\WP\WP_Page_Cache_Control\Concerns\Tests_Headers;
use Alley\WP\WP_Page_Cache_Control\Header;
use Mantle\Testkit\Test_Case;

class Example_Test extends Test_Case {
	use Tests_Headers;

	protected function setUp(): void {
		parent::setUp();

		Header::fake();
	}

	public function test_example() {
		// Perform some action that should send a header.

		static::assertHeaderSent( 'X-My-Header', 'optional value' );
		static::assertHeaderNotSent( 'X-My-Other-Header', 'optional value' );

		// static::assertAnyHeadersSent() and static::assertNoHeadersSent()
		// are also available to assert that any headers were sent or not sent.
	}
}

用法:前端

该软件包具有前端集成,允许在浏览器中分割页面缓存。默认情况下已启用,但可以使用wp_page_cache_control_enqueue_script过滤器禁用。

在可以使用前端之前,必须在后端注册缓存分割组。有关更多信息,请参阅注册组

wpPageCacheControl.setGroupForUser('logged-in-group', 'segment-name');

// To remove a user from a group, you have to set them to a different segment.
wpPageCacheControl.setGroupForUser('logged-in-group', 'different-name');

// To check if a user is in a group or segment, use the following:
wpPageCacheControl.isUserInGroup('logged-in-group');
wpPageCacheControl.isUserInGroupSegment('logged-in-group', 'segment-name');

// You can read the groups and segments from the page cache control object:\
//
//   wpPageCacheControl.groups;

为TypeScript用户提供了类型

npm install --save-dev @alleyinteractive/wp-page-cache-control

测试

运行npm run test以运行针对JavaScript文件的Jest测试。运行npm run test:watch以保持测试运行器打开并监视更改。

运行npm run lint以运行针对所有JavaScript文件的ESLint。在运行开发或生产构建时也会进行lint检查。

运行composer test以运行针对PHPUnit和插件中的PHP代码的测试。

变更日志

有关最近更改的更多信息,请参阅变更日志

鸣谢

该项目由Alley Interactive积极维护。喜欢你所看到的?加入我们工作

许可协议

GNU通用公共许可证(GPL)。有关更多信息,请参阅许可文件