首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Yii 框架緩存清理最簡方案:一鍵清空應用緩存的前後端實現

     編輯:PHP 相關知識

Yii 框架緩存清理最簡方案:一鍵清空應用緩存的前後端實現

開發調試、部署上線、數據異動後常需清理 Yii 應用緩存。本文提供最輕量的「前端按鈕 + AJAX + 後端 Action」方案,無需額外擴展,即插即用。

後端:SiteController 新增 clear Action

public function actionClear() {
    // 清空所有應用緩存組件
    Yii::app()->cache->flush();
    // 若有多個緩存組件(如 cache、cache2),逐個清理
    // Yii::app()->cache2->flush();
    echo 'OK';
}

關鍵點:Yii::app()->cache 返回配置的緩存組件(CFileCache/CMemCache/CRedisCache 等),flush() 為統一介面,會清空該組件所有數據。

前端:按鈕 + jQuery AJAX

<button id="btn-clear-cache" class="btn btn-danger">清空緩存</button>

<script>
$('#btn-clear-cache').click(function() {
    var $btn = $(this).prop('disabled', true).text('清理中...');
    $.get('', { _: Date.now() })
        .done(function() {
            alert('緩存清理成功!');
            location.reload(); // 可選:刷新頁面驗證
        })
        .fail(function() {
            alert('清理失敗,請檢查日誌');
        })
        .always(function() {
            $btn.prop('disabled', false).text('清空緩存');
        });
});
</script>

權限保護(生產環境必加)

public function actionClear() {
    // 僅允許超級管理員或特定 IP
    if (!Yii::app()->user->checkAccess('admin.clearCache')) {
        throw new CHttpException(403, '權限不足');
    }
    Yii::app()->cache->flush();
    echo 'OK';
}

進階:清理特定緩存鍵/標籤

若使用 CCache 衍生類支援標籤(如 yii2-redis、yii2-technode-cache),可精準清理:

// 按鍵清理
Yii::app()->cache->delete('product_list_123');

// 按標籤清理(需組件支援)
Yii::app()->cache->invalidateTags(['product', 'category']);

// 清理文件緩存目錄(CFileCache)
// protected/runtime/cache/ 下刪除對應 .bin 文件

常見緩存組件 flush() 行為差異

組件flush() 行為備註
CFileCache刪除 cachePath 下所有文件預設 protected/runtime/cache
CMemCache發送 flush_all 命令影響整個 Memcached 實例,謹慎使用
CRedisCache執行 FLUSHDB (當前 DB)若共用 Redis 需用前綴隔離
CDbCacheTRUNCATE 緩存表需資料庫權限
CApcCacheapc_clear_cache()僅限 CLI/單進程模式有效

部署腳本整合(CI/CD 推薦)

# 部署腳本片段
php yii cache/flush-all  # Yii2 控制台命令
# 或
curl -X POST "https://api.example.com/site/clear?token=SECRET"

這套方案代碼量極小、零依賴、兼容所有緩存組件,適合快速接入現有 Yii 1.x/2.x 專案。生產環境務必加上權限校驗與操作審計日誌。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved