
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);
上記のように関数を定義し、翻訳が完了するタイミングで原文記事ページのURLを関数に渡してキャッシュされた内容を更新(削除した後、ページが表示される時またはAccelerator設定で定めたタイミングで更新される)させることができます。