WordPress 的核心快取概念

·

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);

在 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:' );

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

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

2017/12/12 更改為:

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

2022/7/9 更新:

快取的技術更新的分常快,HelloYungke 部落格現在的快取方式,已更改為 Cloudflare Enterprise Edge 直接在邊緣伺服器生成靜態頁面,已不須再安裝快取外掛。

hosted by kinsta

Comments

在〈WordPress 的核心快取概念〉中有 3 則留言

  1. 「PRYHT」的個人頭像

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

    1. 「yungke」的個人頭像

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

發佈回覆給「yungke」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Hey, 想嘗試 Kinsta 主機嗎?

18748

Kinsta 高效能主機

wPowered Starter 方案

馬上訂購

18749
Your Mastodon Instance