静态托管成本优化独立产品的「带宽」与「构建」双线控制一、当账单开始「无声增长」独立产品的静态托管成本在产品的早期阶段往往低到可以忽略——Vercel、Netlify、或 Cloudflare Pages 的免费额度对于每天几百到几千次页面访问是完全够用的。但当产品增长或者当你在产品中加了「用户可上传的图片/文件」功能后静态托管的成本可能开始「无声增长」。一个典型的场景是产品设计了一个「用户头像上传」功能且头像原图被直接存在了静态托管服务上。随着用户增长这些文件的带宽消耗可能成为账单上的一个「意外项」。过去一年在帮助多个独立产品做托管成本优化后一个值得记录的经验是静态托管的成本优化核心不是「选最便宜的服务商」而是「在架构上减少不必要的带宽和存储消耗」。这篇文章将复盘具体的优化手段。二、带宽消耗的三个优化方向带宽消耗是静态托管成本的最大部分。优化它有三个方向。方向一图片和媒体的「多级分发」。不要把用户上传的图片或媒体文件直接存在静态托管服务上。更可行的方案是用对象存储如 R2、S3、或 OSS来存储原文件用 CDN 来做分发。这样带宽成本从「静态托管服务商」转移到了「对象存储 CDN 服务商」且通常后者的带宽定价更友好。方向二图片的「按需尺寸」服务。很多产品在所有页面上都用同一张高清原图不管用户的设备宽度是多少。更优的方案是用图片优化服务如 Cloudflare Images、或自建的图片处理服务根据用户的设备宽度动态返回合适分辨率的图片。这样移动端用户可能只下载了桌面端 30-50% 的图片流量带宽成本对应下降。方向三静态资源的「长期缓存」策略。如果你的静态资源JS、CSS、字体的文件名中包含了内容哈希如main.ab12cd34.js那么这些文件是可以被「永久缓存」的——因为文件名变了才说明内容变了。在部署配置中给这类文件设置Cache-Control: max-age31536000一年可以大幅提升回访用户的缓存命中率减少重复下载。三、构建分钟数的优化静态托管服务的第二个成本维度是「构建分钟数」——每次你 push 代码触发构建服务商会按构建实际花费的 CPU 分钟数计费。对于独立产品构建分钟数的优化手段包括第一用增量构建。很多现代前端构建工具如 Vite、Turbo、或 Nx支持增量构建——它们会缓存上一次构建的结果只重新构建「发生改变的模块」。对于大型项目增量构建可以把构建时间从几分钟压缩到几十秒。第二在 CI 中做构建产物缓存。即使本地用了增量构建CI 环境中的构建通常是从零开始的。用构建工具的缓存机制如 Vite 的cacheDir或 Turbo 的远程缓存可以让 CI 中的构建也变成增量式的。第三评估「是否需要每次都全量构建」。有些产品的部署流程中后端和前端是一起构建一起部署的。但如果后端的改动不影响前端可以做成「前端后端独立构建、独立部署」。这样前端没改时就不会消耗前端的构建分钟数。四、存储容量的优化静态托管服务的第三个成本维度是「存储容量」——你部署到托管服务上的文件总大小。对于大多数独立产品存储容量本身不会成为成本瓶颈——前端构建产物的总大小通常在几 MB 到几十 MB 之间远达不到付费阈值。但如果你在产品中加入「用户上传文件」的功能且把上传的文件直接存在托管服务上存储容量可能会快速增长。优化的核心原则是静态托管服务应该只存「产品自身的静态资源」HTML、CSS、JS、图片、字体而不应该存「用户生成的内容」。用户生成的内容应该存在对象存储服务上且只把「访问这些内容的 URL」存在你的数据库中。五、总结静态托管成本优化的核心原则是「在架构上减少不必要的消耗」而不是「选最便宜的服务商」。带宽消耗的三个优化方向图片/媒体用对象存储 CDN 多级分发、按需尺寸的图片服务、以及静态资源的长期缓存策略。构建分钟数的优化手段增量构建、CI 中的构建产物缓存、以及前后端独立构建部署。存储容量的优化原则静态托管只存产品自身资源用户生成内容存对象存储。对于独立开发者托管成本优化的建议是在产品收入能稳定覆盖托管成本之前先做架构上的优化如把用户上传的文件从静态托管迁移到对象存储在产品收入稳定后再评估「是否需要换到更便宜的托管服务商」。好的成本优化是让用户增长时单位用户的托管成本在下降而不是在上升。资料说明本文中的协议、版本、性能、成本和行业趋势应以可核验的一手资料为准。未标注统计口径的比例、时间表和预测仅作工程讨论不应视为行业事实。可参考 0730 资料来源索引并在发布前将具体来源贴到对应断言之后。