使用Jsdelivr部署國內訪問速度友好的靜態站


寫在前面

前言

未備案的域名如果想搭建網站只能選擇國外服務器(好像沒有任何一家雲提供商可以免備案部署國內網站,畢竟不合法)但由於一些眾所周知的原因,國內訪問國外的服務器會比較慢甚至訪問不了,而國內地域的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正式開始

未完待續


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM