使用加速器 API 删除缓存

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’

返回值

属性含义
cachetrue该页面已被缓存
cachefalse该页面未被缓存
optimizationtrue已完成缓存优化
optimizationfalse未优化的缓存
optimizationnull没有缓存
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 }}
This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.