WordPress 的核心緩存概念

Core Caching Concepts WordPress

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

詳細的說明可以參考 2013 年 WordCamp 上的一篇演講稿:

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

Advertisement

WordPress Cache

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

define('WP_CACHE', true);

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

EasyEngine new release adds full-page redis-cache support without any changes or plugins requirement on WordPress end. Redis-cache is much faster and works bett...
但是 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); 下一行加入

define( 'WP_CACHE_KEY_SALT', 'domain.com:' );

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

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

2017/12/12 更改為:

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

Featured Photo 攝影師:Ioannis Ioannidis,連結:Pixabay

Follow me

yungke

視咖啡如命的癮君子,沒有厲害的技術,只會小打小鬧的電腦工程師,其實是個打雜小弟,修電燈、水管也都是我的工作。
yungke
Follow me
Advertisement

Follow Me

查看本文
喜愛 Like 點擊數!!

Comments

  1. PRYHT says:

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

    • yungke says:

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

Back to top