函数和Pages是边缘安全加速 ESA产品打造的一站式全栈开发平台,通过深度集成 Git 工作流、全球边缘网络与智能构建系统,为企业及开发者提供从代码提交到全球分发的一站式部署解决方案。平台支持静态网站、单页应用SPA(Single-Page Application)、服务端渲染SSR(Server-Side Rendering)应用以及边缘函数(Edge Functions)等多种应用场景,满足从个人项目到企业级复杂架构的多样化部署需求。。
核心能力
自动化的构建和部署:原生支持 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编程能力。 | |
函数数量 | 50个 | 每个阿里云账号最多创建50个函数。 | |
版本数量 | 10个 | 每个函数最多保存10个正式版本。 | |
Pages | 文件数 | 2000个 | 每个Pages项目最多可上传2000个静态文件(如:HTML、CSS、JS、图片等)。 |
单个文件大小 | 25MB | 单个文件(如:视频、PDF、JS包)最大支持25MB。 | |
包大小 | 1024MB | 整个项目源码压缩包(deploy package)最大支持1024MB。 |