-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
建议:聚合 checkLocationWorkerRoute
请求以减少 worker 请求数及使用 Cloudflare D1 存储数据
#46
Comments
确实 UptimeFlare 占用的免费资源配额较多(特别是 KV 写), 请求对我来说倒还好. 我暂时的 workaround 是, 我单独开了一个账号用于部署 UptimeFlare, 防止和我其他服务相互干扰. 我记得上次搜索发现一个人持有多个 Cloudflare 账号不违反 Cloudflare 的 TOS. |
创建单独的账号确实是一个办法,但是有点麻烦,并且如果要自定义域名的话就很难办了 你这么一说确实对 KV 的写入消耗的会比较多,而且限制1000/天 我的想法是可以换成用 D1 去记录,限制10w/天,这是绰绰有余的,而且也完全可以摆烂,跟以前 KV 一样记一行字符串就行 不过 D1 我自己也只是粗略用过的程度,如果真的需要切换到 D1,需要研究的点还挺多的
|
我主要比较头疼的是 (3), 迁移到 D1 还得写代码帮助现有用户迁移数据, Cloudflare 平台调试起来灵活度并不高, 比较繁琐, 而且目前发布也没有明确的版本号, 也很难指示用户如何升级. 作为个状态监控不能太折腾, 简单稳定就行. 还发现一个问题: 根据文档, 最大的一个 row 只能存储 1MB 的 string, 相比 KV 的 25MB 还是少了些的, 监控一多容易超. 用关系型数据库强行存长 string 感觉也不太好,
Pages 是支持 CNAME 绑定域名的, 你可以把你主账号的域名直接用 CNAME 接入 Cloudflare 小号的状态页. 我目前就是这么干的.
现在也是可以加个 API 返回最新数据, 然后不刷新的情况下更新页面. |
确实,长度问题的话还得重新设计一下储存方式 不过我目前试着改了一下,已经能用 D1 了,完成了上述的(1)和(2),准备再解决一下你说的行容量问题😂
这个我知道是可以,但如果要使用 |
非常感谢你的代码实现, D1 看起来确实很不错. 我之后有空的时候尝试看看能不能解决旧数据迁移和长度的问题, 然后尽量在某次升级时平稳自动迁移数据到 D1.
这确实是的, 我找了个不用的 eu.org 绑到了我的小号😂
|
checkLocationWorkerRoute
请求以减少 worker 请求数checkLocationWorkerRoute
请求以减少 worker 请求数及使用 Cloudflare D1 存储数据
目前有在推进迁移到D1吗,部署第一天就发邮件超出上限了😭 |
最近比较忙, 升级数据结构比较麻烦, 要解决一些兼容性问题, 如有其他项目建议单独创建新账号部署. |
你也可以尝试使用这里提到的方法降低 KV 写入数量: #63 (comment) |
感谢 |
天天报警 希望能修复 |
我在使用的时候发现产生了很多费用,Workers 创建了一个 R2 API 令牌,我比较担心费用经不起消耗。 |
什么意思?本项目目前并没有使用 R2,每天调用的最贵的资源应该也只是 KV 写入(小于 1000 次每天,在免费额度内,就算按现在付费定价也小于 0.005 美元每天),不应该造成过多的费用消耗。 |
看了下目前的实现,每个
checkLocationWorkerRoute
都会发出独立的请求来请求自身,这相当于每个此设置都会增加1440请求/天这在一般情况下也许无关紧要,但当设置此项的节点数较多,并且用户也部署了其他请求消耗不低的服务的情况下,这个请求量也许不能忽视
是否可以进行改进,将相同
checkLocationWorkerRoute
的请求聚合,例如然后修改 fetch handler 以支持批量 getStatus
The text was updated successfully, but these errors were encountered: