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