WordPress 的核心緩存概念

WordPress 緩存方式大致上可以分為 4 種:Cache Types / Run-time Cache / Object Caching / Page Cache

詳細的說明可以參考 2013 年 WordCamp 上的一篇演講稿:Core Caching Concepts in WordPress

而這一篇是在 EasyEngine 論壇上,討論 EE 該不該將 WP Rocket 加入支援,所另外延伸出來的討論。

一般 WordPress 的緩存插件,如 WP Rocket / W3 Total Cache / WP Super Cache / Cache Enabler 都是屬於 Page Cache,使用 advance-cache.php 方式在 / wp-content / cache / 產生靜態頁面,所以都會要求 wp-config.php 文件內,加入:

在 EasyEngine 使用的 –wpredis 緩存方式,其實是啟用 Nginx 模塊的 redis 支持全頁緩存,詳細說明:EasyEngine 3.3 released with Full-Page Redis Cache support

但是 EasyEngine redis 的全頁緩存不是使用 advance-cache.php 方式,所以不需要加入 define(‘WP_CACHE’, true); 這個設置。

–wpredis 會抓取 資料表中的 wp_options 來當緩存頁,當一台 VPS 中有很多網站,資料表的前輟名稱 ( wp_ ),就很重要了,如果你的資料庫的前輟名稱都使用 wp_,這時的 redis 只會抓到第一個資料庫的內容,你會發現不管開啟哪一個網站,內容都是一樣的。

保險的作法,每一個網站資料庫前輟名稱,都會給一不一樣的,如 A 網站是 aaawp_,B 網站是 bbbwp_,來避免 redis 緩存時誤抓資料表。

另一個作法是在 wp-config.php 文件內,define(‘WP_DEBUG’, false); 下一行加入

將 domain.com 更改為你的網站域名。

本網站 ( yungke.me ) 是使用 Nginx + Redis 快取模式,可以與快取緩存外掛比較看看,不會差太多。

2017/12/12 更改為:

前端使用 FastCgi Cache 做 Page Cache,後端使用 Redis 做 Object Cache 資料庫快取,讓主機的負載更低。

Sending
User Rating 5 (7 votes)

3 Comments

  1. 請問一下Y大
    如果已經用了 Redis 快取模式
    那前台還需要裝快取外掛 如 WP-SUPER Cache之類的嗎?

    • 如果主機端已經用了 Redis 快取模式 (allkeys-lru)。
      前端就不需要裝任何的快取外掛了。
      但是要安裝 Redis Object Cache 和 Nginx Helper 外掛,你才能在 WP 後台清除快取。
      也可以安裝 Async JavaScript 和 Autoptimize 來優化 CSS & JS。

發表迴響

Required fields are marked *.


%d 位部落客按了讚: