相信你已經(jīng)聽說,使用CDN能加速網(wǎng)站。如果你使用WordPress,并且服務(wù)器在國外,你對(duì)網(wǎng)站速度的提升一定更加期待。你準(zhǔn)備使用CDN加速你的WordPress網(wǎng)站,卻發(fā)現(xiàn)國內(nèi)的CDN都需要網(wǎng)站備案,而由于種種原因,你暫時(shí)不愿備案。不久,你發(fā)現(xiàn)了Cloudflare,你欣喜地把你的網(wǎng)站添加到Cloudflare,然后滿懷期待地再次打開網(wǎng)站,卻失望地發(fā)現(xiàn),你的網(wǎng)站好像更慢了!
怎么回事?這是什么破CDN,還號(hào)稱全球最快???!
先別急著責(zé)怪Cloudflare——這家公司的CDN服務(wù),確實(shí)是大陸以外免費(fèi)CDN中最快的了,其速度甚至超過了一些付費(fèi)CDN。更好的是,Cloudflare不按流量收費(fèi),計(jì)費(fèi)方式只有套餐和網(wǎng)站數(shù)量。
但為什么用了Cloudflare,你的WordPress網(wǎng)站會(huì)更慢呢?
這里有一張草圖,展示了使用CDN后訪客訪問網(wǎng)站的過程。當(dāng)然,我相信網(wǎng)上還有很多比這好得多的圖,但我們暫時(shí)看這張就夠了。
你的客戶先經(jīng)過過程①連接到CDN的服務(wù)器,如果CDN已經(jīng)有客戶所需的緩存,那么這次訪問就直接到過程④,你的客戶收到CDN返回的緩存內(nèi)容。當(dāng)然,我們都知道WordPress的大部分內(nèi)容是動(dòng)態(tài)的,這種情況下,CDN會(huì)再經(jīng)過過程②向你的源站請求數(shù)據(jù),通過過程③從源站取得返回?cái)?shù)據(jù),也就是說相比已緩存的內(nèi)容多了兩個(gè)過程。
本來客戶與Cloudflare的數(shù)據(jù)傳輸就比較耗時(shí)(因?yàn)榇蠖鄶?shù)情況下Cloudflare對(duì)來自大陸的請求只使用美國服務(wù)器處理),而Cloudflare與源站的數(shù)據(jù)傳輸也會(huì)需要一定時(shí)間(WordPress本來就比較慢),所以會(huì)造成使用Cloudflare后網(wǎng)站反而更慢的問題。
簡單回顧一下,使用美國服務(wù)器跑WordPress,慢的原因主要有兩個(gè):一是大陸與美國之間的數(shù)據(jù)傳輸本來就比較耗時(shí),二是WordPress對(duì)請求的處理需要一定時(shí)間。
好了,現(xiàn)在你已經(jīng)清楚CDN是怎么工作的,你也明白慢是因?yàn)槭裁戳?。接下來我們就可以開始“對(duì)癥下藥”了。
你可能已經(jīng)有這種想法了:讓CDN直接緩存你的WordPress網(wǎng)站。這樣不僅可以省掉Cloudflare與源站數(shù)據(jù)傳輸?shù)臅r(shí)間,還可以減少WordPress處理數(shù)據(jù)的時(shí)間,而且由于到源站的請求少了,你服務(wù)器的壓力也可以降低。真是一舉多得。
但是怎么實(shí)現(xiàn)呢?你可能會(huì)看到這種說法,對(duì)WordPress進(jìn)行偽靜態(tài)處理,把頁面改成以html結(jié)尾。但事實(shí)是,偽靜態(tài)并不能幫助你“欺騙”Cloudflare進(jìn)行緩存。況且,Cloudflare本來就不會(huì)對(duì)html文件緩存。
我所采用的方法是這樣的:利用Cloudflare的Page Rules強(qiáng)制緩存頁面。
具體操作是,在Cloudflare管理面板中,切換到Page Rules,點(diǎn)擊Create Page Rules添加。下面是我的配置。
也許你一眼就能看懂我這些配置是在干什么,但我還是想說明一下。
第一條配置,是把所有直接訪問http://raaynk.com的請求通過301轉(zhuǎn)到http://www.raaynk.com;
第二條配置,是把所有以http://www.raaynk.com/wp-admin開頭的請求,標(biāo)記為不緩存,也就是回源;
第三條配置,是把所有前兩條配置以外的所有請求,標(biāo)記為強(qiáng)制緩存,緩存時(shí)間為一個(gè)月。
把http://raaynk.com通過301跳轉(zhuǎn)到http://www.raaynk.com,是因?yàn)槲冶容^懶,不想把跳轉(zhuǎn)寫到Web Server的配置中;
不緩存wp-admin開頭的請求,是因?yàn)檫@是WordPress的后臺(tái),如果緩存會(huì)出大問題;
最后強(qiáng)制緩存,不就是我們一直想干的嗎?把它放在最后,是因?yàn)镻age Rules是有權(quán)重先后的。
前面的配置權(quán)重高于后面的配置。也就是如果前面的配置與后面的配置有沖突,則以前面的配置為準(zhǔn)。
免費(fèi)版的Cloudflare目前只能添加3條Page Rules,但就我們強(qiáng)制緩存的需求來說,足夠了。
當(dāng)然了,你可能會(huì)想,這么多內(nèi)容都緩存到Cloudflare,那豈不是要用Cloudflare的很多空間和流量嗎?哈哈,確實(shí)是這樣的,但Cloudflare表示不會(huì)因?yàn)橛脩羰褂昧烁嗟目臻g和流量而向用戶收取更多費(fèi)用?,F(xiàn)在,是不是發(fā)自內(nèi)心地想要大贊Cloudflare?
作者:Raaynk
鏈接:https://www.raaynk.com/archives/008