指南

什麼係 CDN?內容傳送網絡淺白解說

CDN(內容傳送網絡)係由分佈喺好多城市嘅伺服器組成嘅網絡,佢哋保存你網站嘅檔案,例如圖片、腳本、樣式表,有時仲有整個頁面。有人訪問你個網站嗰陣,佢會由離佢最近嘅位置提供內容,而唔係由一部遠方嘅伺服器提供。咁樣頁面會載入得更快,減輕你自己伺服器嘅負擔,亦幫助網站應付突如其來嘅流量高峰。

用 AI 建構時點解 CDN 重要

你可能從來冇親自設定過 CDN,因為好多託管平台會自動喺你網站前面放一個。但你會感受到佢嘅效果:

  • 速度。 頁面載入更快,訪客就會留得更耐,而呢亦係搜尋引擎考慮嘅因素之一。請參閱點樣令你嘅網站更快。
  • 「點解我嘅改動冇顯示?」 你發佈更新之後,舊版本嘅緩存副本可能會留低一段短時間。知道原因,就可以少好多困惑。
  • 私隱同正確性。 如果 CDN 緩存咗錯嘅嘢,例如一個載有某位用戶資料嘅頁面,下一位訪客就可能睇到。知道邊啲嘢應該緩存、邊啲唔應該,有助你問啱問題。

日常比喻

想像一間麵包店,由一間店舖向全國銷售麵包。每位顧客,不論住得幾遠,都要等緊由嗰一間店送貨;遇上繁忙日子,排隊就會非常長。

CDN 就好似喺全國各地嘅街角小店都擺放同一款麵包。顧客可以就近、快速買到,而總店只需要偶爾補貨俾嗰啲街角小店。不過有個問題:如果總店改咗食譜,街角小店會繼續賣舊麵包,直到佢哋被通知更換,或者舊貨過期為止。

CDN 點運作

  1. 你嘅來源(origin)。 你嘅網站存放喺主伺服器或者託管平台,稱為來源。
  2. 邊緣位置(edge locations)。 CDN 喺好多地方設有伺服器,稱為邊緣位置或存在點(PoP)。
  3. 路由。 訪客請求你嘅網站時,DNS 或者網絡路由會將佢導去附近嘅邊緣位置。請參閱域名同 DNS 點運作。
  4. 緩存命中(cache hit)。 如果嗰個邊緣位置已經有一份新鮮嘅檔案副本,就即時送出。
  5. 緩存未命中(cache miss)。 如果冇,邊緣位置會由來源攞檔案,送俾訪客,同時保留一份副本俾下一位訪客用。
  6. 過期。 每份副本保留多久,由你嘅伺服器發送嘅緩存標頭決定,或者直至被清除為止。

實際例子:一個有相片嘅作品集網站

一位攝影師嘅作品集有主頁、一個有 60 張大圖嘅相冊,以及一條聯絡表格。來源伺服器喺歐洲。一位身在新加坡嘅訪客打開相冊。

  • 冇 CDN: 每張圖都要由歐洲傳過嚟。每個請求都要跨越半個地球走一趟,所以相冊會慢慢先載入完成。
  • 有 CDN: 首位新加坡附近嘅訪客觸發嗰度嘅邊緣位置去攞取同儲存圖片。之後喺同一地區嘅每位訪客,都會由附近攞到,快得多。

而家攝影師換咗主頁嘅主打相片,然後重新發佈。決定訪客會唔會見到新相片嘅,係以下嘅設定:

/index.html                    → 緩存時間短,經常檢查
/assets/index-3f9a2c.js        → 緩存時間長
/assets/hero-8b41d0.jpg        → 緩存時間長

包括 Vite 喺內嘅現代建構工具,會俾檔案雜湊名稱,例如 hero-8b41d0.jpg。檔案改咗,名稱就會跟住改,所以頁面會要求一個全新嘅檔案,而任何緩存都未見過呢個名稱。HTML 頁面本身只會短暫緩存,所以好快就會指向新檔案。咁樣就同時做到長緩存同即時更新,呢個係標準做法。

聯絡表格就唔同。表格提交每次都要送去伺服器,所以絕對唔應該緩存。

咩應該緩存,咩唔應該

通常長時間緩存通常短時間緩存共用 CDN 入面唔應該緩存
圖片、字型、影片公開網站嘅 HTML 頁面登入後嘅頁面、儀表板
雜湊名稱嘅 JavaScript 同 CSS偶爾更改嘅公開 API 數據任何帶有個人資料嘅嘢
好少更改嘅可下載檔案表格提交、付款、任何 POST 請求

重點名詞

名詞意思
來源(Origin)你嘅主伺服器或主機,真正嘅檔案存放喺嗰度。
邊緣/PoPCDN 嘅位置,就近為訪客提供服務。
緩存命中/未命中邊緣位置有檔案/要由來源攞檔案。
TTLTime to live,即緩存副本保留幾耐。
Cache-Control 標頭你嘅伺服器發出嘅指示,講明某樣嘢可唔可以緩存,以及緩存幾耐。
清除(purge)/失效(invalidate)即刻話俾 CDN 棄掉緩存副本。
緩存破壞(cache busting)檔案改咗就更改佢嘅名稱或者 URL,令緩存攞新嘅版本。
延遲(latency)因距離同網絡節點而產生嘅延遲。

如要了解更廣泛嘅緩存(瀏覽器、伺服器同數據庫),請睇什麼係緩存。

常見誤解

  • 「CDN 令所有嘢都更快。」 佢只係加速傳送檔案。數據庫查詢慢,或者伺服器上嘅 AI 調用慢,依然係慢。
  • 「CDN 取代咗託管。」 佢係放喺你嘅託管前面。你依然需要一個來源。
  • 「我更新咗網站,所有人即刻見到。」 舊副本可能會喺 CDN 同瀏覽器度留多一陣。要檢查就強制重新整理,亦應該用雜湊檔案名稱。
  • 「緩存永遠安全。」 將個人化嘅頁面放喺共用緩存入面,係真正嘅私隱風險。私人回應應該標示為唔可以緩存。
  • 「CDN 只係大公司先用得。」 好多主機都會為細網站包含一個,而你唔使額外做任何嘢。

向你嘅 AI 建構工具要求咩

  • 「呢個網站前面有冇 CDN?佢緩存邊啲檔案,又緩存幾耐?」
  • 「確保已建構嘅 JavaScript、CSS 同圖片有雜湊檔案名稱同長緩存時間,而 HTML 就用短緩存時間。」
  • 「絕對唔好喺共用緩存入面緩存登入後嘅頁面,或者帶有個人資料嘅 API 回應。」
  • 「壓縮同調整圖片大小,令相冊載入得快啲。」
  • 「我已經發佈咗更新,但仲見到舊版本,係瀏覽器緩存定係 CDN 嘅問題?」

CDN 同 Mythex

喺 Mythex 發佈時,前端靜態網站會以靜態網站形式部署,而文件亦提到,更新之後 CDN 緩存可能會短暫滯後:如果你重新發佈後仲見到舊版本,強制重新整理公開網址就得。呢方面冇任何需要設定。如果你連接嘅自訂域名,DNS 放喺 Cloudflare,文件會要求你將紀錄設為「DNS only」而唔係 proxied,咁 Mythex 先可以正確簽發 HTTPS。請參閱文件中的點樣發佈同自訂域名,以及我哋嘅網頁託管指南。

常見問題

簡單嚟講,什麼係 CDN?

CDN(內容傳送網絡)係由好多位置嘅伺服器組成嘅網絡,佢哋保存你網站檔案嘅副本。訪客會由離佢哋最近嘅位置收到內容,而唔係由你嘅主伺服器,所以頁面載入更快,你嘅伺服器亦都做得少啲嘢。

我更新咗網站,點解仲見到舊版本?

通常係因為舊檔案嘅副本被緩存咗,可能喺 CDN 度、喺瀏覽器度,或者兩者都有。強制重新整理可以解決瀏覽器嗰邊;CDN 嘅副本會自己過期,或者可以清除。建構工具會為改咗嘅檔案俾新名字,避免大部分呢類問題。

細網站需唔需要 CDN?

好多時你未揀都已經有,因為好多託管平台會自動喺網站前面加一個 CDN。如果你嗰個冇,而你嘅訪客分佈喺唔同國家,加一個通常都值得。

CDN 可唔可以緩存我應用程式嘅數據同登入後嘅頁面?

佢可以緩存任何獲准緩存嘅嘢,所以一定要小心設定。圖片、腳本同樣式等公開檔案最適合緩存。個人或者登入後嘅內容,一般唔應該放喺共用 CDN 入面緩存,否則一位用戶可能會睇到另一位用戶嘅資料。

Mythex · Pricing · 用 AI 建造任何嘢 · 網站及應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(台灣)