充分使用Cloudflare

來源: 知乎
作者:Raaynk
時間:2020-11-30
17768
相信你已經(jīng)聽說,使用CDN能加速網(wǎng)站。如果你使用WordPress,并且服務器在國外,你對網(wǎng)站速度的提升一定更加期待。你準備使用CDN加速你的WordPress網(wǎng)站,卻發(fā)現(xiàn)國內(nèi)的CDN都需要網(wǎng)站備案,而由于種種原因,你暫時不愿備案。不久,你發(fā)現(xiàn)了Cloudflare,你欣喜地把你的網(wǎng)站添加到Cloudflare,然后滿懷期待地再次打開網(wǎng)站,卻失望地發(fā)現(xiàn),你的網(wǎng)站好像更慢了!怎么回事?這是什么破CDN,還號稱全球最快?!!

相信你已經(jīng)聽說,使用CDN能加速網(wǎng)站。如果你使用WordPress,并且服務器在國外,你對網(wǎng)站速度的提升一定更加期待。你準備使用CDN加速你的WordPress網(wǎng)站,卻發(fā)現(xiàn)國內(nèi)的CDN都需要網(wǎng)站備案,而由于種種原因,你暫時不愿備案。不久,你發(fā)現(xiàn)了Cloudflare,你欣喜地把你的網(wǎng)站添加到Cloudflare,然后滿懷期待地再次打開網(wǎng)站,卻失望地發(fā)現(xiàn),你的網(wǎng)站好像更慢了!

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

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

但為什么用了Cloudflare,你的WordPress網(wǎng)站會更慢呢?

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

ia_2700000001.jpg

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

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

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

好了,現(xiàn)在你已經(jīng)清楚CDN是怎么工作的,你也明白慢是因為什么了。接下來我們就可以開始“對癥下藥”了。

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

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

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

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

ia_2700000002.jpg

ia_2700000003.jpg

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

第一條配置,是把所有直接訪問http://raaynk.com的請求通過301轉(zhuǎn)到http://www.raaynk.com;

第二條配置,是把所有以http://www.raaynk.com/wp-admin開頭的請求,標記為不緩存,也就是回源;

第三條配置,是把所有前兩條配置以外的所有請求,標記為強制緩存,緩存時間為一個月。

把http://raaynk.com通過301跳轉(zhuǎn)到http://www.raaynk.com,是因為我比較懶,不想把跳轉(zhuǎn)寫到Web Server的配置中;

不緩存wp-admin開頭的請求,是因為這是WordPress的后臺,如果緩存會出大問題;

最后強制緩存,不就是我們一直想干的嗎?把它放在最后,是因為Page Rules是有權重先后的。

前面的配置權重高于后面的配置。也就是如果前面的配置與后面的配置有沖突,則以前面的配置為準。

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

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

作者:Raaynk

鏈接:https://www.raaynk.com/archives/008

立即登錄,閱讀全文
版權說明:
本文內(nèi)容來自于知乎,本站不擁有所有權,不承擔相關法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務商推薦
更多