寫在前面
前言
未備案的域名如果想搭建網站只能選擇國外服務器(好像沒有任何一家雲提供商可以免備案部署國內網站,畢竟不合法)但由於一些眾所周知的原因,國內訪問國外的服務器會比較慢甚至訪問不了,而國內地域的CDN也是對未備案的域名拒之門外的。
正是JSDelivr,它是唯一一家:
- 完全免費(幾乎零成本部署網站)
- 無需綁定域名(自然就沒有了備案的麻煩)
- 有ICP許可證(這意味着它有國內服務器)
的CDN提供商
傳統方案
正常部署靜態網站,但將其中引用的資源文件放到JSDelivr上,靜態托管平台只保留index.html,將其中的引用路徑全改為JSDelivr的路徑。
缺點:
- 每次更新不僅需要更新靜態托管平台的index,還得更新Github上用於JSDelivr的存儲庫,還要刷新每個文件的緩存
- 修改網頁調試時需要把index.html資源的引用路徑改為本地,完事后再改回去,麻煩!
JSDelivr的局限性
- 訪問html文件並不會返回網頁而是返回源代碼
- 單文件不能超過50MB
- 使用國內服務器,不能放違法法律法規的東西
- 會禁止某些奇怪的擴展名(親測可用:js、css、各種圖片、視頻、音頻等)
0x00准備工作
用到的平台
本文以騰訊雲函數、Github為例進行講解
注意事項
- 騰訊雲為國內提供商、JSDelivr有ICP備案和國內服務器,所以千萬不能放違法國家有關法律法規的東西
- JSDelivr雖免費,但不要用於大文件的下載托管和加速,盡量不要存太大的視頻,否則可能會被屏蔽拉黑
- 本方案的任何一個步驟均是合法合規的,可放心使用
- index.html建議不要太大,否則加速效果不明顯甚至減速
- 非常適合webpack等前端打包工具編譯的index.html很小,大部分網頁工作在js里完成的網頁
大體思路
- 將靜態站點放到Github的公開存儲庫中,以后更新站點只需更新存儲庫即可
- 將域名綁定到騰訊雲函數的API網關上,借助騰訊雲函數實現跳轉訪問,具體細節如下:
- 訪問根目錄和其他目錄啥的:從JSDelivr上獲取index.html並返回201狀態碼和網頁(未備案域名選擇香港地域,所以首頁沒有加速效果,建議index.html不要太大)
- 訪問任何靜態文件(看路徑中是否有點“.”來區分,不是特別好,希望能給我提供一個更完美的方案):返回301重定向到拼接好的JSDelivr的Url上(實現JSDelivr跳轉加速訪問)
0x01正式開始
未完待續