
Seraphinite Accelerator是一个强大的工具,可以优化WordPress网站的速度并管理缓存。本文将讨论如何使用API删除生成的缓存。
在COOSS.NET上,使用韩语撰写文章时,会在主题的functions.php中创建一个执行翻译的函数,以便自动执行,并且在翻译后的页面上会生成可以选择其他语言的链接。然而,在没有翻译页面的情况下,首次文章被Accelerator缓存后,即使有翻译页面,在缓存显示的页面上也不会显示链接到翻译页面的问题。
当然,可以设置Accelerator定期更新缓存,但只需更新翻译后的页面,这样每次更改设置是繁琐的,而重新缓存整个站点又不高效,因此我开始寻找一个API,以便在翻译完成后强制重新生成原文页面的缓存。
Seraphinite Accelerator API 概述
Seraphinite Accelerator提供以下API功能。
OperateCache – 缓存管理
可以删除或重新生成特定页面的缓存。
GetCacheStatus – 检查缓存状态
可以检查特定URL是否被缓存。
缓存管理API (OperateCache)
OperateCache函数可以删除特定URL的缓存,或根据需要重新生成。
用法
seraph_accelAPI::OperateCache( $op, $obj );
参数说明
- $op (缓存管理选项)
- CACHE_OP_REVALIDATE → 缓存重新验证 (Revalidate)
- CACHE_OP_CHECK_REVALIDATE → 在必要时进行缓存重新验证
- CACHE_OP_CLEAR → 清理旧缓存
- CACHE_OP_DEL → 删除缓存
- CACHE_OP_SRVDEL → 删除服务器缓存(如果可能)
- $obj (要删除的URL或相对路径)
- 要删除特定页面的缓存,请输入该URL
- 要删除整个站点的缓存,请输入null
缓存删除示例
删除特定页面缓存
seraph_accelAPI::OperateCache( seraph_accelAPI::CACHE_OP_DEL, '/mypage/' );
删除整个站点缓存
seraph_accelAPI::OperateCache( seraph_accelAPI::CACHE_OP_DEL, null );
删除多个URL的缓存
$urls = ['/category/wordpress/', '/tag/performance/', '/custom-post-type/my-post/'];
foreach ($urls as $url) {
seraph_accelAPI::OperateCache( seraph_accelAPI::CACHE_OP_DEL, $url );
}
检查缓存状态API (GetCacheStatus)
可以检查特定URL是否被缓存,缓存优化是否已应用。
用法
$cache_status = seraph_accelAPI::GetCacheStatus($obj, $headers = []);
参数说明
- $obj → 要检查的URL
- $headers (可选) → 通过传递特定HTTP头来检查缓存
- 例如: ‘User-Agent’ => ‘AppleWebKit/9999999.99 Mobile’
返回值
属性 | 值 | 含义 |
---|---|---|
cache | true | 该页面已被缓存 |
cache | false | 该页面未被缓存 |
optimization | true | 已完成缓存优化 |
optimization | false | 未优化的缓存 |
optimization | null | 没有缓存 |
status | 'done' | 缓存完成 |
status | 'revalidating' | 正在重新生成缓存 |
status | 'pending' | 缓存待处理 |
status | 'none' | 未处理 |
检查缓存状态示例
$cache_status = seraph_accelAPI::GetCacheStatus('https://example.com/mypage/');
if ($cache_status['cache']) {
echo '页面已被缓存。';
} else {
echo '页面未被缓存。';
}
创建特定URL列表的缓存删除函数
可以编写一个函数一次性删除多个URL的缓存。
缓存删除函数
function sa_clear_cache_for_urls($urls = []) {
if (!class_exists('seraph_accelAPI')) {
error_log('Seraphinite Accelerator API未加载。');
return false;
}
if (!is_array($urls) || empty($urls)) {
error_log('未提供有效的URL列表。');
return false;
}
foreach ($urls as $url) {
if (!empty($url)) {
seraph_accelAPI::OperateCache(seraph_accelAPI::CACHE_OP_DEL, $url);
error_log('缓存已删除: ' . $url);
}
}
return true;
}
使用示例
$urls_to_clear = [
'/category/wordpress/',
'/tag/performance/',
'/custom-post-type/my-post/',
'/',
];
sa_clear_cache_for_urls($urls_to_clear);
可以像上面那样定义函数,并在翻译完成时将原文页面地址传递给函数,以更新缓存内容(删除后,页面在显示时或在Accelerator设置的时间点会更新)。
Updated : March 18, 2025
{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}