什麼係伺服器(Server)?俾應用程式建構者嘅白話指南
伺服器係一部電腦,或者喺電腦上運行嘅程式,佢等待請求並作出回應。當你打開一個網站,你嘅瀏覽器(即客戶端)會透過互聯網發送請求,然後某處嘅伺服器會送返頁面、圖片或者數據。由電郵到網上銀行,你用嘅每個應用程式都依靠伺服器每日做數百萬次呢類工作。
用 AI 建構時點解伺服器重要
當 AI 建構工具幫你做一個應用程式時,部分代碼會喺訪客嘅瀏覽器運行,而部分代碼通常會喺伺服器上運行。伺服器嗰部分負責瀏覽器做唔到,或者唔可以完全信任瀏覽器去做嘅嘢:
- 儲存同攞取數據,透過數據庫進行。
- 保管 secret,例如付款或 AI 供應商嘅 API 密鑰,呢啲密鑰絕對唔可以到達瀏覽器。
- 檢查權限,確保用戶只可以睇同更改自己嘅記錄。
- 同其他服務溝通:收取卡費、發送電郵、調用 AI 模型。
明白伺服器做乜,可以幫你了解應用程式嘅規則實際上喺邊度,點解有啲改動需要重新發佈,以及你託管應用程式時付嘅係乜。至於兩個部分嘅分工,請睇前端 vs 後端。
日常比喻
伺服器好似郵政局嘅櫃檯職員。佢哋唔會出去搵客人;佢哋只係等。客人(客戶端)行到嚟,帶住一個請求,例如「幫我寄呢個包裹」或者「有冇我嘅郵件?」,職員就會處理並交返一個結果。一位職員可以一個接一個咁服務多位客人,而繁忙嘅郵局就會開多幾個櫃位。
郵局亦有客人無法推翻嘅規則:你要出示身份證件先可以領取包裹。喺應用程式入面,伺服器亦負責呢份工作:瀏覽器可以請求任何嘢,但係伺服器決定佢會收到咩。
請求點樣到達伺服器
當有人訪問 https://bookings.example.com/schedule:
- DNS 查詢。 瀏覽器問域名系統,
bookings.example.com指向邊個 IP 地址。請參閱域名同 DNS 點運作。 - 連線。 瀏覽器連接到該地址,HTTPS 使用 443 埠,並建立加密連線。請參閱什麼係 HTTPS 同 SSL。
- 請求。 瀏覽器發送一個 HTTP 請求:
GET /schedule。 - 工作。 伺服器運行負責處理
/schedule嘅代碼,可能會喺數據庫查找今日嘅預約。 - 回應。 伺服器送返一個狀態碼(
200 OK)同內容,可能係 HTML 頁面,或者俾頁面顯示嘅 JSON 數據。
以上整個過程通常只需要幾分之一秒。
你會聽到嘅伺服器類型
| 名詞 | 意思 |
|---|---|
| 網頁伺服器(Web server) | 處理 HTTP 請求嘅軟件,負責送出檔案,或者將請求交俾你應用程式嘅代碼。 |
| 應用程式伺服器/後端(Application server / backend) | 喺伺服器上運行嘅你自己嘅代碼:處理預約、登入同付款嘅 API。 |
| 數據庫伺服器(Database server) | 專責儲存同查詢數據嘅伺服器,例如你應用程式所連接嘅 Postgres 數據庫。 |
| 檔案/靜態伺服器(File / static server) | 送出現成嘅檔案(HTML、圖片、腳本),而唔需要為每個請求運行自訂代碼。 |
| 實體伺服器(Physical server) | 放喺數據中心機架上嘅真實機器。 |
| 虛擬機(VM)/VPS | 實體機器嘅一部分,運作起來就好似一部獨立電腦。 |
| 容器(Container) | 一個較輕量嘅套件,包住應用程式同佢所需嘅一切,運行喺共享嘅機器上。好多平台都係咁樣部署應用程式。 |
| 無伺服器(Serverless) | 你上載代碼,供應商按需要運行,運行於你永遠唔需要管理嘅伺服器上。請參閱什麼係無伺服器。 |
留意「伺服器」一詞既可以指機器,亦可以指程式。「伺服器死咗」可以指兩者其中之一。
實際例子:一個髮廊預約應用程式
以下係伺服器喺一個細型髮廊預約應用程式入面所做嘅事:
- 訪客打開網站。伺服器(或者前面嘅 CDN)會送出頁面檔案。
- 頁面向伺服器請求
GET /api/slots?date=2026-10-03。伺服器查詢數據庫,搵出空閒時段,然後以 JSON 形式回傳。 - 訪客預約 14:00。頁面送出
POST /api/bookings。伺服器會檢查該時段仍然空閒(佢唔會因為瀏覽器咁講就信以為真),儲存預約,然後回傳201 Created。 - 伺服器用一個儲存喺伺服器上嘅 secret 密鑰,調用電郵服務發送確認信。
如果你關掉伺服器,頁面可能仍然可以從 CDN 載入,但就無法顯示時段或者儲存預約。
伺服器要運作良好需要咩
- 記憶體(RAM)同 CPU。 記憶體太少,應用程式喺高負載時就會崩潰;CPU 太少,就會變慢。
- 保持運行。 關咗機嘅伺服器無法回應。有啲平台會令閒置嘅應用程式休眠,並喺下次訪問時喚醒,咁樣可以慳錢,但第一個請求可能會慢啲。
- 設定同 secrets,以環境變數形式提供。
- 日誌(Logs),即伺服器記錄發生過咩事,係出現問題時你第一個要睇嘅地方。
- 更新同安全修補,由託管服務替你處理。
常見誤解
- 「雲端即係冇伺服器。」 雲端即係其他公司嘅伺服器,按小時或者按用量租用。
- 「伺服器係一部大型特殊電腦。」 任何電腦都可以做伺服器。你喺開發時開啟
localhost,你嘅手提電腦就正在運行一部伺服器。 - 「如果按鈕隱藏咗,用戶就無法撳。」 任何人都可以直接發請求去你嘅伺服器。權限檢查必須喺伺服器上進行,而唔可以只靠頁面。
- 「多加伺服器就可以解決變慢嘅問題。」 真正原因通常係數據庫查詢慢,或者外部 API 慢。要先搵出瓶頸。
- 「要有應用程式,我就要管理伺服器。」 託管平台會替你運行伺服器,你只需要部署代碼,佢哋就會處理機器。
向你嘅 AI 建構工具要求咩
- 「呢個應用程式嘅邊啲部分喺伺服器上運行,邊啲喺瀏覽器運行?」
- 「將所有 API 密鑰保管喺伺服器上,並從環境變數讀取。」
- 「對每個讀取或更改數據嘅請求,都喺伺服器上檢查權限。」
- 「伺服器日誌喺邊度睇?佢哋點樣解釋呢個錯誤?」
- 「呢個應用程式需唔需要伺服器,定係可以只做成靜態網站?」
- 「應用程式閒置一段時間之後,第一個請求會點?」
Mythex 上嘅伺服器
喺 Mythex,你唔需要設定或管理伺服器。喺你建構期間,應用程式會運行於一個私人雲端沙盒,用於即時預覽。當你發佈時,Mythex 會幫你部署:靜態前端部署為靜態網站,後端(Node、Python、C#、Java 等)則由 Dockerfile 建構成容器,你無須自行設定任何託管。Mythex 會喺部署時揀選機器規格:預設係 1 個 CPU 同 512 MB 記憶體,可按要求提供更多(免費方案最高 1 GB,Pro 方案最高 2 個 CPU、4 GB 同 3 部機器)。已發佈嘅應用程式閒置時會休眠,並於下次訪問時喚醒,而休眠中嘅應用程式唔會消耗運算資源。詳情請睇文件中嘅 API 後端同託管限制;我哋嘅網頁託管指南則涵蓋更廣闊嘅範疇。
常見問題
簡單嚟講,什麼係伺服器?
伺服器係一部電腦,或者喺電腦上運行嘅程式,佢等待其他裝置嘅請求並作出回應。當你打開一個網站,你嘅瀏覽器會向伺服器要求頁面,然後伺服器將頁面送返俾佢。
伺服器係實體機器,定係軟件?
兩種意思都有人用。「伺服器」可以指實體或虛擬電腦,亦可以指上面處理請求嘅程式,例如網頁伺服器。現今大部分應用程式都運行喺雲端供應商數據中心嘅虛擬機或者容器上,而唔係你自己擁有嘅硬件。
每個網站都需要伺服器嗎?
需要,因為永遠都要有東西將檔案送去俾訪客。靜態網站只需要一個簡單嘅檔案伺服器或者 CDN。但如果應用程式需要儲存數據、處理登入,或者保管 API 密鑰,就需要一個運行你自己代碼嘅後端伺服器。
localhost 係咩意思?
Localhost 即係「呢部電腦」。開發者喺自己電腦上運行應用程式時,會用類似 http://localhost:3000 嘅地址打開。只有嗰部電腦可以連到,除非部署到公開伺服器,否則其他人都睇唔到。