區域 ID
REGION_ID
是 Google 根據您在建立應用程式時選取的地區所指派的簡寫代碼。雖然某些區域 ID 可能看起來與常用的國家/地區代碼相似,但此代碼並非對應國家/地區或省份。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r
。如果是在此日期之前建立的現有應用程式,網址中則可選擇加入地區 ID。
進一步瞭解區域 ID。
本文件說明 App Engine 應用程式如何接收要求及傳送回應。詳情請參閱要求標頭參考資料。
如果您的應用程式使用服務,則可以設定要求的位址,將要求傳送到特定服務或該服務的特定版本。如要進一步瞭解服務的定址功能,請參閱「要求的轉送方式」一文。
處理要求
您的應用程式負責啟動網路伺服器和處理要求。只要是適用於您開發語言的網路架構,您都可以使用。
App Engine 會執行應用程式的多個執行個體,每個執行個體都有自己專用的網路伺服器來處理要求。每個要求均有可能轉送至任何一個執行個體,因此來自同一個使用者的連續要求不一定會送到相同的執行個體。執行個體可以並行處理多個要求,而執行個體的數量能夠隨流量自動調整。
配額與限制
App Engine 會在流量增加時自動分配資源給您的應用程式,然而這項作業會受到下列限制:
App Engine 會針對低延遲時間 (回應要求的時間不到一秒) 的應用程式,保留自動調整資源配置的容量。
大幅受到 CPU 限制的應用程式可能也會產生一些額外的延遲時間,以便和相同伺服器上的其他應用程式有效率地共用資源。對靜態檔案的要求則不受這些延遲限制。
每個傳送至應用程式的要求均會計入「Requests」(要求) 限制,而回應要求所傳送的資料則會計入「Outgoing Bandwidth (billable)」(連出頻寬 (可計費)) 限制。
HTTP 及 HTTPS (加密連線) 要求均會計入「Requests」(要求)、「Incoming Bandwidth (billable)」(連入頻寬 (可計費)) 及「Outgoing Bandwidth (billable)」(連出頻寬 (可計費)) 的限制。Google Cloud 控制台的「Quota Details」(配額詳細資料) 頁面也會個別回報「Secure Requests」(安全性要求)、「Secure Incoming Bandwidth」(安全連入頻寬) 和「Secure Outgoing Bandwidth」(安全連出頻寬) 的值,以供參考之用。只有 HTTPS 要求會計入這些值。詳情請參閱「配額」頁面。
下列限制專門適用於要求處理常式:
要求限制
- 要求標頭的大小上限為 15KB。
- 要求的總大小上限為 32MB。
- 所有 HTTP/2 要求在轉送到應用程式伺服器時,都會轉譯成 HTTP/1.1 要求。
- SSL 連線會在負載平衡器上終止。來自負載平衡器的流量會透過加密通道傳送到執行個體,然後再透過 HTTP 轉送到應用程式伺服器。X-Forwarded-Proto 標頭會清楚標示來源要求是 HTTP 還是 HTTPS。
回應限制
- 回應會以 64k 區塊進行緩衝。
- 回應無大小限制。
- 回應時間以一小時為限。
- 回應標頭大小上限為 64 KB。超過此限制的回應標頭會傳回 HTTP 502 錯誤,記錄會顯示
upstream sent too big header while reading response header from upstream
。
不支援的 HTTP 要求
App Engine 彈性環境不支援下列功能:
- 轉送到後端服務的 HTTP/2 流量。
- 直接存取執行個體的 HTTP 要求。
要求標頭
傳入 HTTP 要求包含用戶端傳送的 HTTP 標頭。基於安全性考量,部分標頭在送達應用程式之前會由中繼 Proxy 進行處理或修改。
詳情請參閱要求標頭參考資料。
停用緩衝
根據預設,所有來自 App Engine 的回應都會在 64k 區塊中進行緩衝。您可以在某些情況下停用緩衝,直接將位元組串流至用戶端。此方法通常適用於使用等待 GET 或伺服器推送事件 (SSE) 的情況。如要停用緩衝,請將 X-Accel-Buffering
回應標頭設為 no
。
強制 HTTPS 連線
基於安全性考量,所有應用程式皆應鼓勵用戶端透過 https
連線。如要指示瀏覽器針對特定網頁或整個網域採用 https
而非 http
,請在回應中設定 Strict-Transport-Security
標頭。例如:
Strict-Transport-Security: max-age=31536000; includeSubDomains
處理非同步背景工作
背景工作是指應用程式在您傳送 HTTP 回應後,為要求執行的任何工作。請避免在應用程式中執行背景工作,並查看程式碼,確認在您傳送回應之前,所有非同步作業皆已完成。
對於長時間執行的工作,建議您使用 Cloud Tasks。在 Cloud Tasks 中,HTTP 要求會保留一段時間,且只會在任何非同步工作結束後傳回回應。