云上静态网站的省钱做法:OBS+CDN+函数计算的分工与取舍

举报
yd_220626730 发表于 2026/11/01 09:25:53 2026/11/01
【摘要】 静态网站不一定需要长期开机的服务器:用对象存储存文件、CDN就近分发、函数计算处理少量动态请求,并按动静分离设置缓存,才能在成本和复杂度之间取得平衡。

很多静态网站并不需要一台长期开机的服务器。本文讨论一种常见的分工:对象存储负责存放静态文件,CDN负责就近分发,函数计算只处理少量动态请求。理解三者的边界,比一开始就把所有功能塞进一台服务器更重要。

一、基本分工

对象存储(以华为云 OBS 为例)适合存放 HTML、CSS、JavaScript、图片等不经常变化的文件。它的优势是按量计费、容量弹性大,不需要自己维护操作系统和 Web 服务进程。

CDN 则站在用户和源站之间。用户第一次访问时从就近节点获取内容,之后相同内容可以直接命中缓存,从而降低源站压力,也减少跨地域访问的延迟。

函数计算适合处理表单提交、简单的接口代理、生成动态页面片段等短时任务。它按调用次数和执行时间计费,没有请求时不产生持续的计算费用,适合低频、突发性的动态需求。

三者的请求链路可以概括为:用户 -> CDN 节点 ->(缓存未命中时)对象存储或函数 -> 返回结果。

二、缓存是省钱的关键

静态资源和动态请求要分开对待:

  • 图片、样式、脚本等带版本号或内容哈希的文件,可以设置较长的缓存时间;文件更新时改文件名或哈希,旧缓存自然失效。
  • 首页、列表页等经常变化的页面,缓存时间宜短,或者只缓存几分钟,避免用户看到过期内容。
  • 需要登录态、个性化结果的接口不要走 CDN 缓存,或者只做私有缓存,否则容易出现串号、看到他人数据的风险。

一个常见的误区是把所有路径都缓存很久,结果是省了流量,却多花了排查过期内容的时间。先区分“可公开缓存、短时缓存、不能缓存”三类,再逐类设置规则。

三、成本来自哪里

静态网站的主要成本通常包括四部分:存储量、CDN 流量与请求数、函数调用与执行时长、域名与证书等固定支出。评估时可以先回答三个问题:页面总大小是多少、月访问量大概是多少、动态请求占多大比例。

如果访问量很低,长期运行一台服务器往往不划算,因为服务器费用与访问量无关;而对象存储加 CDN 的费用随访问量变化,起步成本更低。反过来,如果动态逻辑很重、每次请求都要做复杂计算,函数按次计费也可能高于一台利用率很高的服务器,这时需要实际测算,而不是凭感觉选择。

四、容易踩的坑

  1. 把动态接口和静态资源放在同一个缓存规则下,导致登录后页面错乱。
  2. 只关注单价,忽略回源流量、请求次数和函数冷启动带来的延迟。
  3. 图片未经压缩就直接上线,页面体积翻倍,CDN 流量随之上升。
  4. 没有设置对象存储的访问控制,公开桶被意外访问或被盗链。

对应的做法是:动静分离、按路径设置缓存、图片按需压缩和按尺寸裁剪、默认私有并只开放必要的读取权限。

五、上线前检查清单

  • 静态资源是否都走了 CDN,源站是否只接受 CDN 回源。
  • 缓存规则是否按文件类型和路径区分。
  • 表单、搜索等动态入口是否有超时、重试和错误提示。
  • 是否开启了访问日志,出现异常流量时能否定位到具体路径。
  • 证书是否正常,HTTP 是否按需跳转到 HTTPS。

结语

对大多数内容型静态网站来说,先用对象存储加 CDN 解决“给所有人看”的部分,再用函数计算解决“偶尔需要算一下”的部分,是一种成本和复杂度都比较可控的起点。等到访问量、动态需求或团队规模明显变化时,再考虑引入更重的架构,而不是一开始就为还不存在的规模付费。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。