cdn节点人少延迟高_如何正确配置CDN高速缓存,避免越用越慢的尴尬
越來(lái)越多的博客網(wǎng)站開(kāi)始用到了國(guó)內(nèi)的免費(fèi)CDN了,比如百度云加速、360網(wǎng)站衛(wèi)士、加速樂(lè)及云盾等等。之前我也寫文章分享過(guò)國(guó)內(nèi)低配置VPS的優(yōu)化方案,其中提到了很多站長(zhǎng)開(kāi)啟CDN加速后反而更慢的問(wèn)題。
文章是這樣描述的:
動(dòng)態(tài)網(wǎng)頁(yè)會(huì)越用越慢
很納悶吧?但事實(shí)的確是這樣!我們先要弄清楚這些CDN加速的原理:當(dāng)用戶請(qǐng)求我們網(wǎng)頁(yè)時(shí),請(qǐng)求會(huì)發(fā)到CDN節(jié)點(diǎn)上,如果是動(dòng)態(tài)數(shù)據(jù),那么CDN節(jié)點(diǎn)將回源站拉數(shù)據(jù),返回給用戶!也就是說(shuō)數(shù)據(jù)是經(jīng)過(guò)了多次轉(zhuǎn)發(fā),加上CDN節(jié)點(diǎn)和源站的延遲,肯定是效果不明顯,而且更慢!
這就不難解釋,總是有人抱怨百度云加速越用越慢,而有人卻說(shuō)很快了。區(qū)別就是,快的人開(kāi)啟了云加速的整站緩存,而慢的人只是弄了一個(gè)CDN代理轉(zhuǎn)發(fā)而已。
沒(méi)錯(cuò),如果只是開(kāi)啟CDN,而不合理的設(shè)置緩存,就會(huì)越用越慢。
下面我就分享2種CDN下的配置方案。
一、動(dòng)靜均緩存
這也是張戈博客之前用到的方案,網(wǎng)站前臺(tái)不管是靜態(tài)還是動(dòng)態(tài),我統(tǒng)統(tǒng)緩存到CDN。那速度絕對(duì)可以飛起來(lái)。
老版百度云加速以及360網(wǎng)站衛(wèi)士等,都可以非常簡(jiǎn)單的搞定這個(gè)事情,因?yàn)橹恍枰苯庸瓷闲枰彺娴念愋?#xff0c;比如一般都是讓你勾選【html】 、【目錄】、【首頁(yè)】這3種類型,全部選上就可以了。
這里插播2條實(shí)用技巧:
①、緩存黑名單
全部選上后,整個(gè)網(wǎng)站不管前后臺(tái)都會(huì)緩存,連后臺(tái)都緩存了,那還怎么玩?所以,這些CDN肯定還會(huì)支持緩存黑名單,大部分是路徑匹配的,比如360網(wǎng)站衛(wèi)士就可以如下設(shè)置不緩存后臺(tái):
一般都是支持通配的,如果連通配都不支持,那也沒(méi)必要使用了。
②、目錄不緩存?
不知道有沒(méi)有朋友遇到勾選了目錄緩存之后,你的Wordpress網(wǎng)站的分類和單頁(yè)面依然不會(huì)緩存,這是為什么?
其實(shí)問(wèn)題在于WordPress的目錄和單頁(yè)面地址默認(rèn)是不以斜杠/結(jié)尾的,不是一個(gè)標(biāo)準(zhǔn)的目錄形式。而絕大部分CDN定義的目錄是以斜杠結(jié)尾的!
有2個(gè)方法來(lái)解決這個(gè)問(wèn)題:
如果CDN存在緩存白名單,那么可以設(shè)置強(qiáng)制緩存(略麻煩)
讓W(xué)ordPress的分類目錄和單頁(yè)面以斜杠結(jié)尾即可==>詳細(xì)教程
那么,問(wèn)題來(lái)了。新版百度云加速已經(jīng)取消了這種簡(jiǎn)單的勾選配置!很多朋友解析到云加速后就放一邊了,結(jié)果速度依然蝸牛,沒(méi)有感受到飛的快感。
其實(shí),新版百度云加速需要自己自定義規(guī)則來(lái)開(kāi)啟緩存!下面簡(jiǎn)單分享下WordPress在百度云加速下開(kāi)啟高速緩存的自定義規(guī)則,如圖點(diǎn)擊可進(jìn)入設(shè)置:
同樣的,根據(jù)前面的黑白名單規(guī)則,我們先定個(gè)調(diào),一般網(wǎng)站應(yīng)該是這樣的情況:前臺(tái)都緩存、后臺(tái)不緩存、個(gè)別頁(yè)面要緩存或不緩存。
先看下百度云加速自定義規(guī)則的說(shuō)明:
提示說(shuō)明: 規(guī)則自定義指對(duì)“指定URL”進(jìn)行頁(yè)面級(jí)規(guī)則定制(支持通配符*)??蓪?duì)任意子域名、目錄、甚至單個(gè)URL進(jìn)行針對(duì)性的加速緩存、安全防護(hù)等配置。列表中上下關(guān)系決定優(yōu)先級(jí),靠上規(guī)則優(yōu)先級(jí)高。站長(zhǎng)可以通過(guò)點(diǎn)擊“↑”調(diào)整優(yōu)先級(jí)。新增規(guī)則優(yōu)先級(jí)最低,將于30s內(nèi)生效。
URL指定支持通配符*,例如
1) 對(duì)img.yoursite.com進(jìn)行特定設(shè)置,需增加URL: img.yoursite.com/*
2) 對(duì)www.yoursite.com/news/?進(jìn)行特定設(shè)置,需增加URL: www.yoursite.com/news/*
3) 對(duì)www.yoursite.com所有html頁(yè)面進(jìn)行特定設(shè)置,需增加URL: www.yoursite.com/*.html
支持通配,這就簡(jiǎn)單了!不過(guò)免費(fèi)版只支持3條規(guī)則,這個(gè)就需要我們合理斟酌一下了。
優(yōu)先級(jí)從上往下依次降低,所以我們要保證不緩存的規(guī)則寫到最上面,才能不會(huì)緩存規(guī)則覆蓋。
根據(jù)我個(gè)人經(jīng)驗(yàn),一般WordPress網(wǎng)站設(shè)置如下3條規(guī)則即可:
①、網(wǎng)站后臺(tái):zhang.ge/wp-admin/* ? 設(shè)置為不緩存或細(xì)致緩存
②、評(píng)論分頁(yè):zhang.ge/*/comment-page-* ? ?設(shè)置為不緩存或細(xì)致緩存
③、網(wǎng)站前臺(tái):*zhang.ge* ? ?設(shè)置為前后通配都緩存
Ps:細(xì)致緩存其實(shí)就是只緩存靜態(tài)文件,其中緩存時(shí)間或有效期請(qǐng)自行設(shè)定即可,無(wú)需按圖照辦。另外由于新版百度云加速現(xiàn)在不能對(duì)單個(gè)域名設(shè)置了,所以最后的緩存規(guī)則是前后通配,保證某些網(wǎng)站的二級(jí)靜態(tài)域名也緩存到位。另外,這只是我個(gè)人經(jīng)驗(yàn)推薦的配置,比如評(píng)論分頁(yè)就可以根據(jù)自己的需要設(shè)置為其他頁(yè)面,此處分享僅供參考!
這樣設(shè)置好了之后,網(wǎng)站前臺(tái)刷幾下就可以看到效果了,當(dāng)然還可以F12到network里面去看header的緩存命中情況,這就不贅述了。
二、只緩存靜態(tài)
動(dòng)靜都緩存可以解決國(guó)內(nèi)低配VPS的2個(gè)尷尬:帶寬和負(fù)載。帶寬問(wèn)題,國(guó)內(nèi)普遍小水管就不用我多說(shuō)了吧。負(fù)載問(wèn)題則是WordPress一直以來(lái)的詬病,刷新快一點(diǎn),CPU就滿了。
但是,有一些網(wǎng)站,本地已有緩存或者訪問(wèn)流量并不高,他們不想開(kāi)啟全靜態(tài)緩存,因?yàn)闀?huì)帶來(lái)的各種數(shù)據(jù)不刷新問(wèn)題。因此,我們?nèi)绾渭冉鉀Q速度問(wèn)題,又兼顧實(shí)時(shí)數(shù)據(jù)呢?
當(dāng)然,開(kāi)啟CDN不進(jìn)行整站緩存設(shè)置的話,大部分CDN會(huì)默認(rèn)緩存靜態(tài)文件,基本滿足以上需求。但是某些CDN有個(gè)坑爹的規(guī)則:他會(huì)和諧某些關(guān)鍵詞,訪問(wèn)有這些關(guān)鍵詞的頁(yè)面就提示違規(guī)并不顯示。
如何解決這個(gè)問(wèn)題?很簡(jiǎn)單,通過(guò)域名做動(dòng)靜分離即可。
將靜態(tài)鏈接替換為二級(jí)域名,并開(kāi)啟CDN緩存。主域名則不走CDN或走CDN但不開(kāi)啟緩存。
將靜態(tài)鏈接替換為二級(jí)域名應(yīng)該不用我多說(shuō)了吧?不會(huì)的看一下張戈博客之前分享的七牛CDN代碼版即可==>傳送門
主域名不走CDN也很簡(jiǎn)單,直接在解析時(shí)不開(kāi)啟緩存即可,也就是直接回源:
如果擔(dān)心暴露IP,如果是阿里云ECS,你還可以CNAME到阿里云的WAF上(這也是張戈博客目前的做法):
走CDN開(kāi)啟緩存和走CDN禁止緩存應(yīng)該也不用我多說(shuō)了,上文都有分享規(guī)則。
如上設(shè)置后,你的網(wǎng)站的速度也會(huì)很快,當(dāng)然前提是你的動(dòng)態(tài)部分不卡才行。如果網(wǎng)站還是比較卡,但是你有不想開(kāi)啟純靜態(tài)導(dǎo)致數(shù)據(jù)不刷新,那么
①、如果是獨(dú)立主機(jī),可以考慮開(kāi)啟redis或opcache等php動(dòng)態(tài)緩存
②、如果是虛擬主機(jī),可以安裝 DB Cache Reloaded Fix這類數(shù)據(jù)緩存插件
當(dāng)然,如果你覺(jué)得還是不夠快,那么推薦和張戈博客一樣,開(kāi)啟Nginx的fastcgi緩存!
三、總結(jié)下區(qū)別
方案一 和 方案二 到底有什么區(qū)別呢?
方案一 是將動(dòng)態(tài)和靜態(tài)都強(qiáng)制緩存到CDN,這樣就算本地不開(kāi)啟任何緩存,用戶的訪問(wèn)速度也是杠杠的。如果想要給搜索引擎蜘蛛一樣的速度,那么本地最好也開(kāi)啟一下靜態(tài)緩存。
方案二 則是只緩存靜態(tài)數(shù)據(jù),動(dòng)態(tài)數(shù)據(jù)依然請(qǐng)求到源服務(wù)器。這樣做的好處是既解決了帶寬尷尬,又解決了前臺(tái)數(shù)據(jù)不能實(shí)時(shí)刷新的問(wèn)題。因?yàn)?#xff0c;占帶寬的主要是靜態(tài)文件,而非html代碼。我們將大體積的靜態(tài)文件托管到CDN加速,源服務(wù)器就只要負(fù)擔(dān)體積很小的html代碼流量了,速度自然就快了!
當(dāng)然,這樣做很容易就出現(xiàn)了前文提到的開(kāi)啟CDN反問(wèn)變慢的尷尬。。。解決辦法也很簡(jiǎn)單,本地開(kāi)啟一下動(dòng)態(tài)緩存即可。
張戈在幫不少站長(zhǎng)做網(wǎng)站優(yōu)化時(shí),設(shè)置過(guò)百度云加速,發(fā)現(xiàn)大部分站長(zhǎng)都不會(huì)設(shè)置,然后還對(duì)我說(shuō)為啥你弄過(guò)之后就飛起來(lái)了,我當(dāng)初使用云加速就卡出翔?其實(shí)就是不會(huì)設(shè)置而已!所以,今天我分享出來(lái),弱弱的為CDN正名,那些用過(guò)之后罵CDN垃圾越用越慢的人,先自己好好反省一下吧!
好了,本文羅里吧嗦說(shuō)了一大堆,有需求的自然會(huì)豁然開(kāi)朗,沒(méi)需求的就會(huì)如同嚼蠟了。我敢說(shuō),如果你看懂了這些設(shè)置技巧,那么使用任何CDN都會(huì)信手拈來(lái),輕松應(yīng)付!
總之一句話,張戈寫文章的期望不高,希望對(duì)有需求的人有所幫助就好。
總結(jié)
以上是生活随笔為你收集整理的cdn节点人少延迟高_如何正确配置CDN高速缓存,避免越用越慢的尴尬的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 南京理工大学计算机学院教授严捍,2019
- 下一篇: android studio 搭建环境,