WordPress 快取方式大致上可以分為 4 種:Cache Types / Run-time Cache / Object Caching / Page Cache
詳細的說明可以參考 2013 年 WordCamp 上的一篇演講稿:
https://www.tollmanz.com/core-caching-concepts-in-wordpress/
而這一篇是在 EasyEngine 論壇上,討論 EE 該不該將 WP Rocket 加入支援,所另外延伸出來的討論。
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);
PHP在 EasyEngine 使用的 –wpredis 快取方式,其實是啟用 Nginx 模組的 redis 支持全頁快取,詳細說明:EasyEngine 3.3 released with Full-Page Redis Cache support
https://easyengine.io/blog/easyengine-3-3-full-page-redis-cache/
但是 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:' );
PHP將 domain.com 更改為你的網站域名。
本網站 ( yungke.me ) 是使用 Nginx + Redis 快取模式,可以與快取緩存外掛比較看看,不會差太多。
2017/12/12 更新:
前端使用 FastCgi Cache 做 Page Cache,後端使用 Redis 做 Object Cache 資料庫快取,讓主機的負載更低。
2022/07/09 更新:
快取的技術更新的分常快,HelloYungke 部落格現在的快取方式,已更改為 Cloudflare Enterprise Edge 直接在邊緣伺服器生成靜態頁面,已不須再安裝快取外掛。

發佈留言