天天看點

如何實作網站檔案動靜分離

<b>背景</b><b></b>

傳統動靜不分離的産品架構,随着通路量在增長,性能會成為瓶頸。以一個常見的web站點為例。www.acar.com是一個剛建立汽車資訊車友交流網站,主站用php搭建,有10gb的圖檔素材,部分js檔案。目前購買一台ecs放置所有程式代碼,并在ecs上安裝mysql資料庫。随着使用者通路量的不斷增長,不少使用者反映,通路網站的速度越來越慢,圖檔加載慢,網站響應慢,同時網站技術人員也發現使用者上傳的圖檔越來越多,快超過1tb了。在這種情況下,使用者可以通過利用oss和cdn對網站進行架構優化,做到網站檔案的動靜分離的,提升使用者通路體驗,實作成本可控。

<b>網站動靜分離架構</b><b></b>

如何實作網站檔案動靜分離

在該架構中,oss作為海量檔案存儲源,靜态圖檔、視訊檔案、下載下傳包、app更新包等均放在oss,同時oss作為cdn的源站,通過cdn加速分發,使用者通過cdn節點就近獲得檔案。

該架構優勢十分明顯:

降低web伺服器負載,靜态檔案通路負載全部通過cdn;

存儲費用最低,oss的存儲費用僅為ecs磁盤費用的50%;

海量存儲空間,無需考慮存儲架構更新;

流量費用低,相比直接通過oss通路,除極少額外增加的回源流量外,主要流量使用cdn流量,單價最低隻需0.26gb,遠遠低于oss直接通路的外網流量單價。

<b>具體操作步驟</b><b></b>

<b>第一步</b><b>:</b>對ecs上的網站程式進行整理,把動态程式部分和靜态部分分不同的目錄管理起來:

建立images目錄,放置所有網站高清素材圖檔;

建立javascript目錄,放置所有的js腳本;

建立attachment目錄,放置所有使用者上傳的圖檔和附件。

<b>第二步</b><b>:</b>進入到oss控制台,點選“cdn加速oss”。

如何實作網站檔案動靜分離

選擇建立bucket。根據你ecs所在的區域選擇bucket所在區域,權限選擇“公共讀”,bucket名稱與ecs上建立的目錄的名稱對應,比如”acar-image-bucket“,選擇下一步;

輸入“image.acar.com”作為您網站高清素材圖檔的加速域名後,點選下一步;

選擇預設的自動添加阿裡雲解析,點選完成。

<b>第三步</b><b>:</b>點選“立即上傳檔案,體驗加速效果”。

點選清單中已經上傳檔案的“擷取位址”,您就能擷取到該檔案的cdn加速的通路位址,通常為“您輸入的加速域名+'/'+'檔案名'”的格式;

逐一完成圖檔檔案的上傳。

如何實作網站檔案動靜分離
如何實作網站檔案動靜分離
如何實作網站檔案動靜分離

<b>第四步</b><b>:</b>按照前三步的示意,把其他兩個檔案也通過“cdn加速oss”的方式上傳,分别建立“acar-js-bucket”和"acar-csimages-bucket"兩個使用cdn加速的ossbucket。

<b>第五步</b><b>:</b>在原本ecs系統中,找到原本通路靜态檔案的代碼,把通路url修改為加速通路的位址。

大功告成,以後使用者通路您的網站的靜态檔案就全部通過oss+cdn的方式通路,不再占用您ecs的資源。

<b>需要注意的是,</b>如果您想把使用者上傳的檔案自動同步到“acar-csimages-bucket”中,您可以參考oss相關sdk和api的putobjcet部分,實作代碼級别自動上傳。

<b>注意事項</b><b></b>

 oss是以bucket為機關設定cdn加速,您最好為每個bucket指定一個二級域名,友善管理;

 使用者第一次通路靜态資源,會先回源oss擷取資源再推送到cdn,需要大概5分鐘左右的生效時間。您可以在更新資源後,通過重新整理的方式,讓cdn主動回源,讓使用者通路時不再等待。

<b>相關資料</b><b></b>

<a href="#/oss/product-documentation/domain-region">各區域的oss通路位址</a>

<a href="http://market.aliyun.com/products/52738003/cmgj000281.html?spm=5176.doc29887.2.4.ws5wna">oss用戶端工具windwos版本</a>

用戶端工具,支援檔案夾上傳,支援大檔案自動分片多線程上傳、支援批量删除、支援批量設定。

<a href="http://market.aliyun.com/products/52738003/cmgj000282.html?spm=5176.doc29887.2.5.ws5wna">oss用戶端工具mac版本</a>

<a href="#/">cdn管理控制台</a>

網頁版本控制台,友善您進行管理設定和簡單的檔案管理。