函數和Pages是邊緣安全加速 ESA產品打造的一站式全棧開發平台,通過深度整合 Git 工作流程、全球邊緣網路與智能構建系統,為企業及開發人員提供從代碼提交到全球分發的一站式部署解決方案。平台支援靜態網站、單頁應用SPA(Single-Page Application)、服務端渲染SSR(Server-Side Rendering)應用以及邊緣函數(Edge Functions)等多種應用情境,滿足從個人專案到企業級複雜架構的多樣化部署需求。
函數和Pages即原邊緣函數功能,計劃於2025年11月底升級上線,敬請期待。
核心能力
自動化的構建和部署:原生支援 GitHub,自動感知主幹分支代碼變更並完成構建和部署。
全球邊緣分髮網絡:函數和Pages可秒級完成全球部署,所有請求通過分布式網路就近分發,確保終端使用者獲得最低延遲訪問體驗。
企業級安全、合規、可營運:與ESA安全加速無縫整合,讓您的Pages網站快速具備WAF、抗DDos、Bots管理等安全能力。同時支援從生產環境的灰階發布,到完善的監控日誌系統,全方位保障生產環境業務穩定性。
邊緣函數能力:基於V8 Isolate提供低延遲的邊緣函數服務,自動擴縮容,無需關心底層伺服器等基礎設施。
開發人員友好體驗:支援多端操作,提供 Web 控制台、命令列工具及 RESTful API等方式,滿足自動化整合需求。
工作原理
判斷請求類型:當用戶端請求到達ESA邊緣節點時,會進行請求類型分流——函數和Pages請求將進度獨立模組進行最佳化處理。
處理請求內容:函數和Pages請求中的動態內容將交由函數模組進行計算處理,靜態內容則由緩衝模組擷取緩衝或回源擷取資源。
基本概念
函數:函數是阿里雲在邊緣節點提供的JavaScript代碼運行環境,可以執行您上傳的JavaScript代碼。使用函數產品時,您需要先建立函數,一個函數由兩個部分組成:配置(包含函數的名稱、描述等)和JS代碼(即您上傳的JavaScript代碼指令碼)。
Pages:Pages是基於ESA基礎設施構建的一體化前端開發與部署平台,面向現代 Web 開發情境設計,賦能開發人員高效完成靜態網站與無伺服器應用的構建及發布。平台深度整合函數,實現動靜態資源的協同分發與商務邏輯的就近執行,顯著提升內容交付效率與互動響應效能,全面支援全球使用者低延遲訪問。
版本:函數和Pages支援版本管理。您開發函數和Pages的過程中,JS代碼必定是不斷修改更新的,當某一個階段的代碼修改和測試完成後,您可以將該時刻的代碼快照產生一個代碼版本。當您發布函數和Pages時,您需要選擇其中一個代碼版本進行發布。系統為您提供版本回溯和管理歷史代碼能力。每個版本匹配一個版本號碼,版本號碼由系統自動產生。此外,平台支援基於百分比的灰階發布能力,可在測試環境及生產環境中同時發布兩個函數和Pages版本,並自訂各版本的流量分配比例。例如:配置版本1佔10%、版本2佔90%,則使用者請求將按對應機率路由至相應版本,實現精細化的灰階驗證與風險可控的漸進式發布。
環境:函數提供測試環境、生產環境滿足您開發測試和部署的不同需求:
測試環境:測試環境是一個供您測試代碼的獨立邊緣節點,測試環境類比生產環境但與生產環境隔離,您在測試環境修改函數的配置或代碼不會影響生產環境。測試環境需要根據頁面提供的測試環境IP配置Host後才可訪問。
生產環境:生產環境也稱線上環境,由遍布全球的大量邊緣節點群組成。當您在測試環境完成代碼測試後,即可發布至生產環境。(上圖僅為樣本說明,函數將根據您的請求規模自動增減分配的節點,具體節點的地區分布以實際為準)。
網域名稱:函數的調用方式。目前支援網域名稱綁定和路由兩種觸發方式,您可以通過綁定網域名稱將某個網域名稱流量全部轉寄至函數,或者通過函數路由的方式將某個網域名稱的部分流量轉寄至函數,具體請參見佈建網域名。
使用限制
功能 | 限制項 | 限制 | 說明 |
函數 | 回應時間 | 120秒 | 函數單次執行的回應時間不能超過120秒(等待I/O也算作RT時間)。 |
等待時間 | 10秒 | 網關等待Functions的時間,如果Functions在10秒內仍不返回任何資料,則網關會主動中斷連線,向用戶端返回504狀態代碼。 | |
程式碼封裝大小 | 4 MB | 每個函數的JavaScript代碼檔案大小上限。 | |
子請求數量 | 4個 | Functions單次執行允許fetch的請求數量。 | |
開發語言 | JavaScript(ES6文法) | 目前僅支援JS,您需要有JavaScript編程能力。 | |
Pages | 檔案數 | 2000個 | 每個Pages專案最多可上傳2000個靜態檔案(如:HTML、CSS、JS、圖片等)。 |
單個檔案大小 | 25MB | 單個檔案(如:視頻、PDF、JS包)最大支援25MB。 | |
包大小 | 1024MB | 整個專案源碼壓縮包(deploy package)最大支援1024MB。 |