如何降低应用的托管成本
要降低托管成本,首先要弄清楚实际运行的是什么、为什么运行,然后在无人使用时让一切进入休眠。在支持缩容至零的主机上,闲置的应用和休眠的数据库成本很低,因此最大的节省通常来自于消除那些让它们保持唤醒的因素——最常见的是每隔几秒检查一次数据库的代码——其次是减少带宽,并删除无人使用的应用。
大多数小型应用并不是流量问题,而是“总有东西在运行”的问题。本指南说明如何找到并解决它,并提供可以交给AI应用构建器的提示词。
你实际在为什么付费
小型应用的托管账单来自几个方面。了解哪一项占比最大,就知道应该从哪里入手。
| 成本 | 驱动因素 | 常见解决方法 |
|---|---|---|
| 计算(服务器) | 机器的规格以及运行的小时数 | 让它休眠;选择合适的规格 |
| 数据库 | 其大小以及保持唤醒的时长 | 停止持续查询,使其能够休眠 |
| 带宽 | 访客下载的数据量 | 压缩图片,缓存文件 |
| 存储 | 你保存的文件和数据 | 删除不需要的旧上传文件、日志和备份 |
| 第三方API | 调用AI模型、地图、邮件、短信等 | 缓存结果,设置调用限制 |
许多现代主机,包括Mythex,都支持缩容至零:当没有人使用应用时,服务器会停止,计算费用为零,并在下一次访问时唤醒。这使问题从“我的服务器有多大?”变成了“我的服务器为什么一直醒着?”
第1步:查看钱花在了哪里
在改动任何内容之前,打开你的主机用量页面,找出:
- 哪个项目花费最多。通常是一个应用占了大部分账单。
- 哪一类费用——计算、数据库、带宽还是存储。
- 什么时候在消耗。深夜没有用户时仍然保持平稳的曲线,是有东西让应用保持唤醒的线索。
在Mythex上,用量详情会显示过去30天的数据,分为构建(AI智能体)和运行(托管、带宽、数据库和文件存储),并按项目细分。
第2步:让闲置的应用和数据库休眠
对于大多数小型应用来说,这是最关键的手段。一个在闲置时休眠、在下一次请求时唤醒的数据库,在安静时段几乎不产生费用。而一个每隔几秒就被查询一次的数据库永远不会空闲,所以你全天都在为它付费。
Mythex的托管限制详细说明了已发布应用的运作方式:休眠的应用不产生计算费用,数据库以最小规格启动,忙碌时增长,空闲5分钟后休眠,并按其大小乘以唤醒时长计费。因此,一个每隔几分钟(无论白天还是夜里)就查询一次数据库的应用,计费就如同一直处于繁忙状态,而没有后台“杂音”的同一应用则几乎没有费用。
常见的让应用保持唤醒的因素:
- 轮询。 页面每隔2–5秒询问服务器“有没有新内容?”。只要有一台笔记本电脑开着这个标签页,数据库就永远不会休眠。
- 自动刷新的仪表板,即使没有人在看,也会按计时器重新加载数据。
- 运行时监控,每分钟ping一次应用。
- 服务器代码中的后台循环——例如一个永远清理或同步数据的
setInterval。 - 有人为了避免首次访问缓慢而添加的定时“保活”请求——它们的原理是阻止休眠,而这恰恰是费用的来源。
让AI帮你找出这些内容:
在代码中查找所有通过计时器运行或反复查询数据库的内容:轮询、setInterval、自动刷新、后台循环。列出每一项,说明其运行频率,以及在没有人打开页面时是否仍会运行。暂时不要做任何更改。
然后逐一修复:
仪表板每3秒轮询一次/api/orders。请改为仅在浏览器标签页可见时刷新,并将间隔从3秒改为60秒。添加一个手动刷新按钮。
如果你的应用确实需要实时更新(例如聊天或实时比分),可以询问它能否仅在有变化时推送更新,而不是不断地请求。对于许多应用来说,“用户回到标签页时刷新”就已经足够了。
第3步:选择合适的服务器规格
更大的机器每小时的费用更高。许多AI构建的应用从默认规格开始就足够了;问题往往出在,为了修复实际上是慢查询导致的速度问题,而要求“更多性能”。
- 保持能够满足你的流量且不出错的最小规格。
- 如果遇到内存崩溃,首先询问AI应用是否一次加载了过多数据(例如整张表,而不是一页结果)。
- 只有在测量到需要它们的流量时,才增加机器。
在Mythex上,机器规格在发布时根据应用的需求选定,只有在流量较大时才会启动额外的机器,流量下降后又会恢复休眠。费用随规格而变化,因此如果你认为规格过大,可以在聊天中要求更小的规格。
第4步:减少带宽
带宽是访客下载的数据量。图片通常是其中最大的部分。
- 压缩图片,并使用WebP或AVIF等现代格式。
- 将图片调整为实际显示的尺寸。一张4000像素的照片以400像素的缩略图显示,会浪费掉下载量的大部分。
- 对首屏以下的图片进行懒加载。
- 缓存静态文件(脚本、样式、图片),让回访的访客无需重新下载。参阅什么是缓存。
- 不要让应用在每次页面浏览时都提供大文件。
检查应用中的每一张图片。将它们调整为显示时的最大尺寸,转换为WebP格式,并对首屏以下的内容进行懒加载。告诉我优化前后的总大小。
更快的页面和更低的带宽通常是同时实现的——参阅如何让你的网站更快。
第5步:清理无人使用的内容
- 取消发布旧应用——测试部署、已结束的实验、去年的活动网站。
- 删除旧的上传文件、不需要的日志和导出文件。
- 删除不再使用的共享预览链接。 在Mythex上,打开预览链接会唤醒项目并消耗你的积分,因此一个被遗忘、仍有人不断打开的链接依然会产生费用。
- 移除未使用的服务——应用不再调用的API服务器或工作进程。
第6步:考虑使用静态网站
如果你的网站没有登录功能、没有保存的用户数据,也没有服务器端逻辑——例如营销网站、作品集或菜单——它可以是一个静态网站:以CDN提供的纯文件形式运行。不需要持续运行服务器或数据库。在Mythex上,静态网站在闲置时不消耗积分。
这个网站没有登录功能,也不保存数据。能否将它重建为无服务器的静态网站?我们会失去什么?
第7步:关注付费的API调用
对于调用AI模型、地图或短信的应用,第三方账单可能远超托管费用。
- 对于每次调用都要付费的功能,要求用户登录。
- 添加每位用户的使用限制(参阅什么是速率限制)。
- 缓存不会变化的结果,例如对同一地址重复进行地理编码。
- 在每个服务商处设置消费上限或提醒。
常见误区
- 凭猜测而不是测量。 先查看用量明细;最昂贵的部分往往并非你所预料的。
- 为了修复缓慢而购买更大的服务器。 缺失的数据库索引或加载过多的数据,通常才是真正的原因。
- 对所有内容进行轮询。 每一个每隔几秒触发的计时器,都是数据库保持唤醒的一个理由。
- 通过ping应用来让它“保持温热”。 这会抵消缩容至零带来的节省。应接受首次访问时的短暂唤醒,或者有意识地为常驻运行付费。
- 忘记旧的部署。 闲置的应用连同其数据库和后台任务会悄悄地累积费用。
- 未压缩的图片。 通常是小型网站上最大的带宽成本。
检查清单
- 我知道哪个项目、哪一类费用(计算、数据库、带宽、存储)花费最多。
- 在没有人查看时,没有任何东西每隔几秒轮询数据库。
- 仪表板以合理的间隔刷新,或仅在标签页可见时刷新。
- 没有运行时监控或后台循环无故让应用保持唤醒。
- 服务器是能够正常运行的最小规格。
- 图片已调整尺寸、压缩并懒加载;静态文件已缓存。
- 旧应用已取消发布,旧文件已删除,不再使用的预览链接已移除。
- 没有数据或登录功能的网站已设为静态网站。
- 付费API已设置登录要求、每位用户的限制以及服务商的消费提醒。
在Mythex上降低成本
Mythex对构建和托管使用同一个积分余额,因此托管方面节省的积分,可以留给构建使用。以下是一些Mythex特有的要点:
- 已发布的应用及其数据库在闲置时休眠,并在下一次访问时唤醒。数据库在空闲5分钟后休眠,因此消除持续轮询通常是最大的收益。
- Pro套餐的托管、数据库、带宽、文件存储和预览沙盒费率为免费套餐的一半;AI费用在两个套餐中相同。参阅积分。
- 在积分余额偏低、可能导致已发布应用暂停之前,你会收到一封邮件提醒;暂停的应用会保留其数据库和文件。
关于运行成本的更多信息,请参阅构建一个应用需要多少钱和什么是网页托管。
常见问题
我的应用用户很少,为什么托管账单却很高?
通常是有什么东西一直让它保持唤醒。例如,每隔几秒就查询一次数据库的代码,每分钟ping一次的运行时监控,或者被遗忘的后台循环,即使没有访客,也会让服务器和数据库全天候运行。
休眠的应用还会产生费用吗?
在支持缩容至零的主机上,休眠的应用几乎不产生计算费用;通常你仍需为存储的数据付费。在Mythex上,休眠的已发布应用不产生计算费用,其数据库在空闲5分钟后休眠,并且只按其唤醒的时长计费。
轮询会增加托管成本吗?
是的。每隔几秒轮询一次,意味着数据库永远不会有空闲时段,因此无法休眠。应降低轮询频率,仅在有人查看页面时才轮询,或者改用推送方式更新,而不是主动请求。
静态网站比Web应用更便宜吗?
通常是的。静态网站只是从CDN提供的文件,无需持续运行服务器或数据库。如果你的网站没有登录功能,也不保存数据,将其构建为静态网站是最大的节省途径之一。