去年一个客户给我打电话,真的是惊恐万状。他的代理商营销网站在活动中途宕机了。不是服务器崩溃,也不是 DDoS 攻击。Netlify 在周二下午因为他超出了免费层限制而限制了他的带宽,而他的账单周期还要三周才能重置。他从 2021 年以来一直在使用 Starter 计划,从未想过这个问题。说实话,我也没想过,直到那通电话。
那次事件让我坐下来,实际上制定了 Netlify 免费层提供的内容、它在哪里悄悄切断你的内容,以及升级到 Pro 是否值得,或者是否有更聪明的解决方案。在 Seahawk 的整个生命周期中构建和托管了超过 12,000 个网站后,我通过 Netlify 完成的项目足以让我分享一些有价值的意见。
Netlify Starter 计划实际包含的内容
让我们具体一点。Netlify Starter 计划是免费的,不需要信用卡,每个团队可以包含一个成员。你能得到:
- 每月 100GB 带宽,跨所有网站
- 每月300分钟构建时间,在所有项目间共享
- Netlify Functions:每月125,000个请求和100小时运行时
- 表单:每月100次表单提交
- 1个并发构建(其他一切都排队)
- 从Git持续部署(GitHub、GitLab、Bitbucket)
- 即时回滚
- 自定义域名,通过Let's Encrypt自动HTTPS
- Netlify Edge网络(CDN)包含
- Pull请求的部署预览
这个列表看起来令人印象深刻。对于个人作品集、小型宣传网站或爱好项目来说,它确实令人印象深刻。仅HTTPS自动化这一项,以前需要我每个网站手动配置20分钟。现在完全不费力。
但请注意营销文案中缺少的内容:这些限制在你整个团队账户中是共享的。一个账户,所有网站,一个配额池。
带宽限制真正发挥作用的地方
100GB听起来很大。但不一定总是很大。
这样想。一个合理优化的网站,平均页面大小为2MB,如果你没有正确压缩图片,这个数字会快速增长,每500个访客就会消耗1GB。扩展到50,000个月度访客,你就会用完100GB。这还只是一个网站。
我在2022年为一个美食旅行客户做过一个Gatsby博客项目。内容很好,背后有适当的SEO工作。该网站开始每月吸引约60,000个会话,我们对此感到兴奋,直到我注意到带宽达到85GB,而月份还有九天。我们相当快地把他们迁移到了Netlify Pro。
人们没有考虑到的是:Netlify计算的是出站带宽,意味着访客下载的每一个资源。未优化的英雄图片、嵌入字体、没有被正确代码分割的JavaScript包,所有这些都算。在你在任何地方托管之前,通过WebPageTest运行你的网站,把页面大小控制住。这个单一的习惯已经救了我几个客户免于不必要的升级。
当你达到限制时会发生什么
Netlify不只是让你变慢。他们向你的访客展示一个Netlify品牌的错误页面而不是你的网站。这不优雅。没有足够提前期的警告邮件让你真正采取行动。网站就宕机了。这就是我客户遭遇的情况。
你可以在仪表板中设置支出通知,我强烈建议从第一天就做这个,但它们不一定总是以足够的缓冲被触发。如果你的网站正在获得真实流量,每周检查你的带宽使用情况。
300构建分钟问题
这是首先困扰机构的限制,而不是带宽。
一个网站 300 分钟看起来还不错。但如果你在一个 Netlify 账户下管理五到十个客户项目,每个都有在每次推送时触发的 CI/CD 流水线,你会在月中就用完配额。Next.js 或 Gatsby 在内容丰富的网站上的构建可能需要 3 到 15 分钟,取决于你的缓存配置有多好。
这是我在 Seahawk 对免费层项目的做法:
- 正确启用构建缓存。如果你配置得当,Netlify 会在构建之间缓存
node_modules目录。不要跳过这一步。在重复部署时可以将构建时间减少 60-70%。 - 使用分支部署控制。关闭每个分支的自动部署,只在
main或production上触发。没理由在还没人审查的特性分支上浪费分钟数。 - 批量处理内容变更。如果你用的是 Sanity 或 Contentful 这样的 CMS,不要把每个小编辑都作为单独部署发布。使用定时或手动触发。
- 必要时拆分账户。两个 Netlify 账户各有 300 分钟。不够优雅,但对小机构有效。
Netlify 构建配置文档详细讲述了缓存设置。值得你花一个下午阅读。
免费层上的 Netlify Functions
每月 125,000 次函数调用听起来很巨大,直到你用 Functions 做表单处理、身份验证回调或 API 代理时——这些在每次页面交互时都会触发。
我的诚实看法是:对于低流量网站上的基础无服务器任务,免费层是可以的。一旦你运行任何接近实际应用逻辑的东西、用户会话、动态数据获取、大量webhook处理,你至少需要预算Netlify Pro(目前每个成员19美元/月)的成本,或者重新考虑Netlify Functions是否是合适的工具。Cloudflare Workers对纯函数计算有非常慷慨的免费层,我在几个计算需求更高的项目中,将它与Netlify托管一起使用过。
表单:100份提交的上限太小了
这确实是Starter计划中最容易被低估的限制。
每个月所有网站上共100份表单提交。如果你在一个有真实流量的在线业务网站上有联系表单,你会很快触及这个限制。我在为一家本地会计师事务所的三页宣传网站上,在上线两周内就达到了上限。
对于表单很重要的免费层项目,我现在完全绕过Netlify Forms,直接连接到Formspree或一个简单的Zapier webhook。Netlify Forms功能确实很好,垃圾邮件过滤也运作得很好,但100份提交的限制使其对任何面向客户的东西都显得太简陋了。
并发构建和部署队列延迟
一个并发构建意味着其他所有东西都排队。在一个安静的个人项目上,你根本不会注意到。在一个两个开发者同时推送的团队工作流中,你会立刻注意到。
我在Seahawk为零售客户重新上线的一次特别忙碌的冲刺期间遇到了这个问题。三个开发者,全都在推送修复,都在等待唯一的构建槽位释放。反馈循环变得缓慢。我们最终临时升级到Pro,就为了那两周,然后又降级了下去。Netlify允许你中途取消和降级,所以这种有针对性的升级确实是可行的。
何时升级到Pro才真正有意义
不是每个项目都需要Pro。我是这样考虑的:
- 月访客量超过20,000的客户网站:可能需要升级。带宽风险不值得冒客户信任受损的代价。
- 两名或以上开发者主动部署:仅出于并发构建的考虑也应该升级。
- 任何认真使用 Netlify Forms 的网站:升级或替换表单工具。
- 个人项目、作品集或测试网站:保持免费计划,智能管理即可。
撰写本文时,Netlify Pro 的价格是每个团队成员每月19美元。对于单个自由职业者来说,每年228美元。将其与产品发布期间一次网站中断对客户好感度造成的成本相比,账目很清楚。
也有一些真正不错的替代方案值得了解。Cloudflare Pages 的免费层级极为慷慨(每月500次构建、无限带宽),当 Netlify 的构建分钟数成为瓶颈时,我已经将一些较轻的项目迁移到那里。Vercel 也是显而易见的比较对象,特别是对 Next.js 项目。两者都不是绝对更优,各自都有各自的缺陷。
我对新项目的实际建议
要有意识地选择在哪个账户上部署项目。在 Seahawk,我们在免费账户上保留内部和实验性项目,默认将面向客户的生产网站迁移到付费账户。19美元/月是业务开支。把它视为现场客户工作的可选项是假经济学。
每月审查你的带宽。设置消费提醒。在部署前压缩图像,使用 Squoosh 这样的工具或在你的构建流程中运行 sharp。如果你管理超过四五个活跃网站,要认真考虑单个 Netlify 账户是否是正确的结构,或者按客户分开账户并正确计费在组织上是否更有意义。
---
常见问题
Netlify 的免费套餐包括自定义域名吗?
包括。您可以将任何拥有的自定义域名连接到 Netlify Starter 站点。Netlify 处理 DNS 配置(如果使用 Netlify DNS)并通过 Let's Encrypt 自动配置免费 TLS 证书。域名连接本身没有费用,但您仍需向域名注册商支付域名费用。
如果超过带宽限制,我的站点会怎样?
Netlify 会用 Netlify 错误页面替换您的站点,直到您的计费周期重置或升级。不会先自动限流或减速。这是一个硬性停止。这就是为什么在月中监控您的使用情况很重要。
我可以在一个免费 Netlify 账户上拥有多个站点吗?
可以,对站点数量没有明确限制。限额(带宽、构建时间、表单提交、函数调用)在账户的所有站点上汇总。更多站点意味着这些池的消耗速度会更快。
Netlify 的免费套餐适合客户的生产站点吗?
取决于流量和您的风险承受度。对于月访问量在 20,000 以下且表单使用最少的低流量站点,如果您监控指标,是可以的。对于任何面向客户、停机会带来实际后果的情况,我会选择付费 Pro 版。每月 19 美元不值得冒这个险。
构建时间如何计算?
Netlify 会计算你的构建过程在他们基础设施上实际运行的时间,向上舍入到最近的一分钟。已取消的构建仍会消耗取消前使用的分钟数。并行构建(在更高级计划中可用)不会节省总分钟数,它们只是让多个构建同时运行。
