EdgeOne Makers 常见问题
前面 12 篇教程把 EdgeOne Makers 的各个方面都讲了一遍,从注册账号到部署项目,从域名配置到 API 调用,从消息通知到排障指南。但在实际使用过程中,大家可能还会遇到各种各样的问题。这篇把最常见的疑问整理出来,一次性解答,同时也分享一些性能优化和最佳实践。
账号相关
免费额度有多少
EdgeOne Makers 提供免费的套餐,适合个人项目和小型团队使用。
| 资源 | 免费额度 |
|---|---|
| 项目数量 | 不限 |
| 每月带宽 | 100 GB |
| 每月请求数 | 100 万次 |
| 构建时长 | 每月 100 小时 |
| 存储空间 | 每个项目 1 GB |
对于个人博客、作品集、小型 API 服务来说,免费额度完全够用。
超出免费额度怎么办
超出免费额度后,项目不会立即停止服务,但会开始计费。
| 计费项 | 单价 |
|---|---|
| 额外带宽 | 0.5 元/GB |
| 额外请求 | 0.001 元/千次 |
| 额外构建时长 | 0.1 元/分钟 |
| 额外存储 | 0.1 元/GB/月 |
如果预计会超出很多,建议升级到付费套餐,价格更优惠。
支持哪些支付方式
| 支付方式 | 说明 |
|---|---|
| 微信支付 | 扫码支付,最方便 |
| 支付宝 | 扫码支付 |
| 银行卡 | 支持国内各大银行 |
| 企业转账 | 企业用户可以走对公转账 |
部署相关
部署后多久能访问
正常情况下,部署完成后几秒到几分钟内就能访问。
| 情况 | 访问速度 |
|---|---|
| 默认域名 | 几秒内可用 |
| 自定义域名(首次) | 需要等待 DNS 生效,几分钟到 24 小时 |
| 自定义域名(非首次) | 几分钟内可用 |
| 全球加速 | 首次分发需要几十秒,后续访问走缓存 |
可以部署私有仓库吗
可以。支持 GitHub、GitLab、Bitbucket 的私有仓库。
关联 Git 账号时,授权范围选择”私有仓库”即可。
支持 monorepo 吗
支持。如果你的仓库包含多个项目(比如用 pnpm workspace 或 turborepo),可以在项目配置中指定子目录。
{
"rootDirectory": "packages/web"
}
这样平台只构建和部署 web 这个子项目。
可以部署 Docker 镜像吗
目前不支持直接部署 Docker 镜像。
EdgeOne Makers 的定位是应用托管平台,不是容器平台。如果你的项目需要自定义运行环境,可以通过构建脚本安装依赖。
如果确实需要容器化部署,建议使用腾讯云的其他产品,比如容器服务 TKE。
构建失败怎么重试
在控制台的部署记录里,找到失败的部署,点击”重新部署”按钮。
也可以用 CLI:
edgeone deploy --retry
域名相关
可以绑定多少个自定义域名
每个项目可以绑定的自定义域名数量:
| 套餐 | 域名数量 |
|---|---|
| 免费版 | 每个项目 10 个 |
| 付费版 | 每个项目 100 个 |
| 企业版 | 不限 |
支持中文域名吗
支持。中文域名(比如 我的网站.com)也可以绑定。
不过中文域名在浏览器里会显示为 Punycode 编码,用户体验不太好,建议还是用英文域名。
域名可以转移到其他项目吗
可以。在域名管理里先解绑,然后在另一个项目里重新绑定。
转移过程中会有短暂的中断,建议在流量低峰期操作。
支持 HTTP/2 和 HTTP/3 吗
支持。所有通过 EdgeOne Makers 部署的网站都自动启用 HTTP/2。
HTTP/3 也在逐步开放中,部分地区已经支持。
性能优化
如何加快首屏加载速度
| 优化手段 | 说明 |
|---|---|
| 代码分割 | 按路由拆分代码,避免一次性加载 |
| 图片优化 | 使用 WebP 格式,压缩图片 |
| 开启 Gzip | 平台默认开启,检查是否被禁用 |
| 使用 CDN | EdgeOne Makers 自带 CDN 加速 |
| 预加载关键资源 | 用 link rel=”preload” 提前加载 |
| 减少第三方脚本 | 每个脚本都会拖慢加载速度 |
如何优化 API 响应速度
| 优化手段 | 说明 |
|---|---|
| 使用 Edge Functions | 轻量逻辑放边缘节点,延迟更低 |
| 缓存响应 | 设置合理的 Cache-Control 头 |
| 数据库优化 | 加索引、减少查询、使用连接池 |
| 压缩响应体 | 开启 Gzip 或 Brotli 压缩 |
| 减少请求次数 | 合并接口,避免多次请求 |
如何减少带宽消耗
| 优化手段 | 说明 |
|---|---|
| 压缩静态资源 | 构建时开启压缩 |
| 图片懒加载 | 视口外的图片延迟加载 |
| 使用字体子集 | 只包含用到的字符 |
| 开启缓存 | 静态资源设置长缓存时间 |
| 删除无用代码 | Tree shaking 去掉死代码 |
缓存策略
EdgeOne Makers 默认的缓存策略:
| 资源类型 | 缓存时间 |
|---|---|
| HTML 文件 | 不缓存 |
| JS/CSS 文件 | 1 年(带 hash 的文件名) |
| 图片 | 1 个月 |
| 字体 | 1 年 |
| API 响应 | 不缓存 |
可以在 edgeone.json 中自定义缓存规则:
{
"headers": [
{
"source": "/static/**",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=31536000, immutable"
}
]
}
]
}
安全相关
如何防止恶意请求
| 防护手段 | 说明 |
|---|---|
| 速率限制 | 限制 API 的请求频率 |
| CORS 配置 | 只允许信任的域名跨域访问 |
| 请求验证 | 验证请求来源,防止伪造 |
| WAF | 启用 Web 应用防火墙 |
CORS 配置示例:
export default function handler(req, res) {
res.setHeader('Access-Control-Allow-Origin', 'https://trusted-domain.com');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
if (req.method === 'OPTIONS') {
res.status(200).end();
return;
}
// 处理业务逻辑
}
如何保护环境变量
环境变量本身就是安全的,不会暴露在前端代码里。
但要注意:
| 注意事项 | 说明 |
|---|---|
| 不要在前端代码中读取敏感变量 | 前端代码会被用户看到 |
| 使用加密环境变量 | 防止控制台泄露 |
| 定期轮转密钥 | 降低泄露风险 |
| 限制访问权限 | 只给需要的人 |
是否支持 DDoS 防护
支持。EdgeOne Makers 基于腾讯 EdgeOne 的安全能力,自带 DDoS 防护。
| 防护类型 | 说明 |
|---|---|
| L3/L4 DDoS | 自动防护,不需要配置 |
| L7 DDoS | 自动识别和拦截恶意流量 |
| CC 攻击 | 速率限制 + 人机验证 |
迁移相关
从 Vercel 迁移到 EdgeOne Makers
迁移步骤:
| 步骤 | 说明 |
|---|---|
| 1. 导入项目 | 从 Git 仓库导入 |
| 2. 配置环境变量 | 把 Vercel 的环境变量搬过来 |
| 3. 调整构建配置 | 大部分情况下零配置就能用 |
| 4. 测试预览 | 在预览环境测试 |
| 5. 切换域名 | 把 DNS 指向 EdgeOne |
详细的迁移指南在 EdgeOne Makers 迁移指南 里。
从 Netlify 迁移到 EdgeOne Makers
Netlify 的配置文件是 netlify.toml,EdgeOne Makers 用的是 edgeone.json。
主要区别:
| Netlify | EdgeOne Makers |
|---|---|
| netlify.toml | edgeone.json |
| _redirects 文件 | redirects 配置 |
| _headers 文件 | headers 配置 |
| Functions 目录 | edge-functions 目录 |
迁移时需要把这些配置文件转换一下。
从 Cloudflare Pages 迁移到 EdgeOne Makers
Cloudflare Pages 的配置相对简单,迁移也比较容易。
主要注意:
| Cloudflare Pages | EdgeOne Makers |
|---|---|
| Wrangler 配置 | edgeone.json |
| Workers 函数 | Edge Functions |
| KV 存储 | 需要对接其他存储服务 |
| R2 存储 | 需要对接其他存储服务 |
最佳实践
项目结构建议
my-project/
├── src/ # 源代码
├── public/ # 静态资源
├── package.json # 依赖配置
├── edgeone.json # EdgeOne 配置(可选)
├── .nvmrc # Node 版本(可选)
├── .env.local # 本地环境变量(不要提交)
└── .gitignore # Git 忽略文件
Git 提交规范
| 规范 | 说明 |
|---|---|
| 有意义的提交信息 | 不要写 “fix” 或 “update” |
| 小步提交 | 每次提交一个完整的改动 |
| 分支管理 | main 是生产,develop 是测试 |
| 代码审查 | PR 合并前要有 review |
部署流程建议
| 环境 | 分支 | 部署方式 |
|---|---|---|
| 开发 | feature/* | 本地预览 |
| 测试 | develop | 自动部署到测试环境 |
| 预发布 | release/* | 部署到预发布环境 |
| 生产 | main | 自动部署到生产环境 |
监控建议
| 监控项 | 工具 |
|---|---|
| 部署状态 | EdgeOne Makers 通知 |
| 网站可用性 | 第三方监控服务 |
| 性能指标 | 浏览器开发者工具 |
| 错误日志 | EdgeOne Makers 日志 |
| 带宽使用 | 控制台监控面板 |
速查卡片
| 要点 | 说明 |
|---|---|
| 免费额度 | 每月 100GB 带宽、100 万请求 |
| 部署后访问 | 默认域名几秒内可用,自定义域名需等 DNS |
| 性能优化 | 代码分割、图片优化、缓存策略 |
| 安全防护 | CORS、速率限制、DDoS 防护 |
| 迁移支持 | 从 Vercel/Netlify/Cloudflare 迁移都有指南 |
| 最佳实践 | 合理的项目结构、Git 规范、部署流程 |
| 监控建议 | 部署通知、可用性监控、性能指标、错误日志 |
| 计费方式 | 超出免费额度后按量计费,可升级套餐 |