小站日誌 013 – Cloudflare -3- 如果要整頁 Cache 的討論

系列文章 本篇為第三篇

想更進一步的加速,把頁面也 Cache 起來

其實這才是 CDN 真正的威力所在吧? 但這時候你要考慮的就要很詳細,所有動態的 Response 都要設定 CDN 忽略(Bypass),否則就會被 Cache 住, 內容不能及時更新就算了,不小心 Cache 到你的 Admin 相關內容、或你的登入內容,那就很糟糕喔!

目前,我還在評估,但可以先討論,如下

具體做法

如果想要更進一步的加速,就要設定 Page Rule,大致是:

先設定一些 URI (或反正某些條件) 不 Cache,例如

  • 忽略 /wp-admin*
  • 忽略 /ajax*
  • 忽略 /wp-login*
  • 忽略 /xmlrpc*
  • 忽略 /*preview=true*

再把其他頁面跟剩下的一切東西通通 Cache 起來。

  • Cache /* Everything

用免費版達成 WordPress 頁面 Cache 之討論

由於免費版的 Cloudflare 只能設定 3 條,個人在這裡評估,覺得對 WordPress 有點不太夠用:

  1. 登入頁 URI 需要一條。
  2. wp-admin* 所有頁面需要一條。
  3. Cache 剩下所有頁面,需要一條。

嗯 … 扣打沒了。但,其實還有幾個需要處理的頁面,例如:

  1. xmlrpc.php  (當然,也可以考慮裝外掛把這功能封起來,也許可以省下這一條) (參考資料)
  2. ajax API (用於 WP 的 ajax 相關動作,也有人會用這個來寫自己需要的 API,這個目前好像找不到簡單乾脆的方法關閉,所以… 好像省不了這一條)
  3. 文章預覽 (當然,你也可以強迫自己在後台編輯文章時,絕不使用預覽,那可能也可以省下這一條)

建議的 Page Rule 可以參考這篇 8 Useful Cloudflare Page Rules For WordPress Sites

我這邊已經在評估上省略所有優化型的規則,只留必要的,目前為止還是覺得需要至少四條。 (當然另一個方法是付錢增加 Rule 數量XD,這個就不在這邊的討論範圍)

除了 Page Rule 之外

請當心,現在你既然要把頁面內容整個 Cache 起來,那麼頁面的組成中,就不可以留有任何跟『登入』有關的資訊,例如  Admin Barin

Admin Bar

這個是當你登入後台時,如果瀏覽前台頁面就會在上方出現的 Bar,如下圖:

所以,如果你瀏覽的文章有 Admin bar ,那當然也會被 Cache,畢竟它是 HTML 內容的一部份。

所有跟登入有關的資訊,應當是由 js 在頁面 Ready 後,用 ajax 之類的方式賦予上去,這樣這頁才能上 CDN。

關閉 Admin Bar 以及相關知識可以參考這篇

Logged in as xxx, Log out?

除了 Admin Bar 之外,留言區也會有您現在以 xxx 身份登入的文字,如下圖:

這個玩意兒,當然也不可以被 Cache 起來!

關於這一項,目前我還在廣看解決方案。

所以總合來說,我暫時還只有讓 Cloudflare Cache 靜態檔案們,尚未進入 Page

實在不行,可以治標XD

當然以上兩項都可以透過規範行為來解決,請可以登入後台的人,絕對不要在有登入後台的瀏覽器上瀏覽前台,那麼可以治標解決這兩個問題XD

You Might Also Like

Leave a Reply

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料