网络安全 · Network security

Cloudflare开启强制缓存 加速网站

•̀.̫•́✧ · 7月19日 · 2020年本文1742字 · 阅读5分钟103

相信你已經聽說,使用CDN能加速網站。如果你使用WordPress,並且服務器在國外,你對網站速度的提升一定更加期待。你準備使用CDN加速你的WordPress網站,卻發現國內的CDN都需要網站備案,而由於種種原因,你暫時不願備案。不久,你發現了Cloudflare,你欣喜地把你的網站添加到Cloudflare,然後滿懷期待地再次打開網站,卻失望地發現,你的網站好像更慢了!

怎麼回事?這是什麼破CDN,還號稱全球最快?!!

先別急著責怪Cloudflare——這家公司的CDN服務,確實是大陸以外免費CDN中最快的了,其速度甚至超過了一些付費CDN。更好的是,Cloudflare不按流量收費,計費方式只有套餐和網站數量。

但為什麼用了Cloudflare,你的WordPress網站會更慢呢?

這裡有一張草圖,展示了使用CDN後訪客訪問網站的過程。當然,我相信網上還有很多比這好得多的圖,但我們暫時看這張就夠了。

Cloudflare开启强制缓存 加速网站-歪?是3.1415926吗

你的客戶先經過過程①連接到CDN的服務器,如果CDN已經有客戶所需的緩存,那麼這次訪問就直接到過程④,你的客戶收到CDN返回的緩存內容。當然,我們都知道WordPress的大部分內容是動態的,這種情況下,CDN會再經過過程②向你的源站請求數據,通過過程③從源站取得返回數據,也就是說相比已緩存的內容多了兩個過程。

本來客戶與Cloudflare的數據傳輸就比較耗時(因為大多數情況下Cloudflare對來自大陸的請求只使用美國服務器處理),而Cloudflare與源站的數據傳輸也會需要一定時間(WordPress本來就比較慢) ,所以會造成使用Cloudflare後網站反而更慢的問題。

簡單回顧一下,使用美國服務器跑WordPress,慢的原因主要有兩個:一是大陸與美國之間的數據傳輸本來就比較耗時,二是WordPress對請求的處理需要一定時間。

好了,現在你已經清楚CDN是怎麼工作的,你也明白慢是因為什麼了。接下來我們就可以開始“對症下藥”了。

你可能已經有這種想法了:讓CDN直接緩存你的WordPress網站。這樣不僅可以省掉Cloudflare與源站數據傳輸的時間,還可以減少WordPress處理數據的時間,而且由於到源站的請求少了,你服務器的壓力也可以降低。真是一舉多得。

但是怎麼實現呢?你可能會看到這種說法,對WordPress進行偽靜態處理,把頁面改成以html結尾。但事實是,偽靜態並不能幫助你“欺騙”Cloudflare進行緩存。況且,Cloudflare本來就不會對html文件緩存。

我所採用的方法是這樣的:利用Cloudflare的Page Rules強制緩存頁面。

具體操作是,在Cloudflare管理面板中,切換到Page Rules,點擊Create Page Rules添加。下面是我的配置。

Cloudflare开启强制缓存 加速网站-歪?是3.1415926吗

也許你一眼就能看懂我這些配置是在幹什麼,但我還是想說明一下。

第一條配置,是把所有直接訪問http:// xxx.com的請求通過301轉到http://www. xxx.com;
第二條配置,是把所有以http://www. xxx.com/wp-admin開頭的請求,標記為不緩存,也就是回源;
第三條配置,是把所有前兩條配置以外的所有請求,標記為強制緩存,緩存時間為一個月。

把http:// xxx.com通過301跳轉到http://www. xxx.com,是因為我比較懶,不想把跳轉寫到Web Server的配置中;
不緩存wp-admin開頭的請求,是因為這是WordPress的後台,如果緩存會出大問題;
最後強制緩存,不就是我們一直想幹的嗎?把它放在最後,是因為Page Rules是有權重先後的。

前面的配置權重高於後面的配置。也就是如果前面的配置與後面的配置有衝突,則以前面的配置為準。

免費版的Cloudflare目前只能添加3條Page Rules,但就我們強制緩存的需求來說,足夠了。

當然了,你可能會想,這麼多內容都緩存到Cloudflare,那豈不是要用Cloudflare的很多空間和流量嗎?哈哈,確實是這樣的,但Cloudflare表示不會因為用戶使用了更多的空間和流量而向用戶收取更多費用。現在,是不是發自內心地想要大贊Cloudflare?

0 条回应