目的是省个服务器,
背景是,app 主要功能不依赖服务器,服务器只提供极少配置信息以及一个附属功能,使用时连不上就放弃,
后来发现效果不好,懒得维护相关功能就直接把服务器域名解析到 127.0.0.1 了,可是发现就这居然还偶尔出现尝试连接服务器浪费了几秒的情况,
排查发现是网络呆理软件异常,对 app 来说服务器连接上了等待响应,实际上只是卡住了,
于是我就提前加个判断,域名提前解析一下,指向本地就直接关闭相关服务,
然后突然觉得,既然都提前 dns 解析了,不如干脆做个 txt 记录的解析,内容放个 json 之类的直接把配置信息自带了,要开关什么直接改 txt 记录就好,0 成本,也能避免服务器停止维护时连几个简单配置都获取不到,
想知道有没人这么做过的,不是在必须 txt 记录的情况使用 txt 记录,而是为了降低成本强行使用的 txt,
想知道有没什么坑,能想到的就只有解析记录更改不会实时生效,这点我这可以接收,
1
UG4anS3JspYD 2021-05-13 16:35:05 +08:00 1
也有可能 很久 甚至 几年不生效
|
2
yousabuk 2021-05-13 16:36:19 +08:00 via iPhone
@UG4anS3JspYD 精辟
|
3
ho121 2021-05-13 16:39:06 +08:00 via Android
dns 可以伪造
|
4
huangmingyou 2021-05-13 16:39:15 +08:00
应该没啥问题,至于生效问题,可以把 ttl 弄到 60 秒
|
5
AoEiuV020 OP @UG4anS3JspYD 这个不至于吧,感觉上,十分钟到半小时就能生效了吧,一直不刷新缓存那这 dns 服务器也该废了吧,
|
6
UG4anS3JspYD 2021-05-13 16:41:55 +08:00
@AoEiuV020 还有一种运营商 叫长城宽带
|
7
AoEiuV020 OP @ho121 详细说说?用户主动破解自己骗自己情况我这边不需要在意,而且 http 甚至 https 都防不住这些,
其他应该没有什么安全性的问题吧,正经 dns 服务器拿到的记录应该都是真实的, |
8
AoEiuV020 OP @UG4anS3JspYD 有所耳闻,但没用过,我正经备案的域名,他应该不会随便把我的解析污染了吧,
|
9
colatin 2021-05-13 16:46:45 +08:00
以太坊 bootstrap node 就是这么做的,可以参考一下
|
10
AoEiuV020 OP |
11
leafleave 2021-05-13 17:15:52 +08:00
看起来没什么问题,很机智
|
12
xmt328 2021-05-13 17:24:44 +08:00
有条件的话可以先做实验
把 TXT 记录和服务器请求数据做对比 看实际用户的更新延迟情况如何 问题不大再正式使用 |
13
honk 2021-05-13 18:13:59 +08:00
https://betterprogramming.pub/apparently-you-can-use-route53-as-a-blazingly-fast-database-dd416b56b005
|
14
2ME 2021-05-13 18:26:40 +08:00 via iPhone
|
15
touchwithe 2021-05-13 18:27:43 +08:00 via iPhone
如果不想用服务器,还是搞个函数计算,或者把 txt 放在对象存储里好一些。
|
16
Showfom 2021-05-13 18:40:05 +08:00
txt 记录一条最大 255 字符 你可以 base64 然后多条记录
但是太多记录的话 等下解析不出来哦 |
17
37Y37 2021-05-13 18:41:16 +08:00
这个思路 666 呀
|
18
AoEiuV020 OP @touchwithe 函数计算之类的有考虑过,但是国内貌似没啥免费的吧,原本我是想挂在 github pages 或者 cloudflare 上的,但是连接太慢,我这个可以接受失败,但不能接受太慢,
|
19
AoEiuV020 OP @Showfom 嗯,255 是个瓶颈,虽然可以多条但也影响效率,
不过对我还好,只是存几个 key value,够用, |
20
Greatshu 2021-05-13 20:02:10 +08:00
|
21
jim9606 2021-05-13 20:06:41 +08:00
如果你只是找个位置放一个非关键的配置信息,用 github 等代码托管平台就可以了。
你要知道在国外有人拿推特当 C&C 服务器用的。 |
22
Tink 2021-05-13 20:15:47 +08:00 via Android
应该没问题
|
23
imdong 2021-05-13 20:30:12 +08:00 via iPhone
曾经有人拿博客类平台做配置源。
|
24
xiaket 2021-05-13 20:36:40 +08:00
各级 DNS 缓存无法控制, DNS 服务器为了压榨性能故意不遵守协议里的 TTL 长期缓存下去你拿它真没什么办法. 这种 TTL hack 只能用于不太重要的功能. 重要的功能比如版本升级判定, 搞个很小的 json 放 cdn 会更好.
|
25
ZeroClover 2021-05-13 20:42:10 +08:00
挺多这么干的,怕楼上说的解析问题就 HTTPDNS 或者 DNS over HTTPS
|
26
strengthen 2021-05-13 20:43:42 +08:00
最好的配置源是 Github !
可以顺便推荐一下我用这种方式做的 app 吗? 大佬可以 iPhone 下载试一试:NFC Master 向大佬们学习! |
27
strengthen 2021-05-13 20:45:32 +08:00
另:iCloud 也推荐用作配置源!
|
28
cz5424 2021-05-13 22:13:55 +08:00
利用过 txt 记录传文件,不过是很小的二进制
|
29
Yunen 2021-05-13 23:16:34 +08:00
可以考虑直接上 github,配合 jsdliver 读取仓库下的配置文件 @ latest
|
30
ragnaroks 2021-05-13 23:17:50 +08:00
几年前用过 TXT 记录对比是否需要更新
29313(当前版本号).build.app.com TXT 29400 如上方法使用,一个版本号只用一次,基本上不遇到缓存问题,但是有时会丢解析导致无法获取更新 |
31
learningman 2021-05-13 23:37:25 +08:00 via Android
永恒之蓝的开关不就是个域名吗~
|
32
billlee 2021-05-14 03:16:54 +08:00
这是病毒木马常用的通信手段,容易被误伤
|
33
explore365 2021-05-14 07:06:33 +08:00
可以,直接调用 http DNS 解析即可。
|
34
liuliancao 2021-05-14 08:25:35 +08:00
配置这样管理起来不 ge 的慌吗……——……
|
35
sutra 2021-05-14 08:53:03 +08:00
255 长度限制,可以来个链表~
|
36
lyhiving 2021-05-14 08:54:18 +08:00 via Android
最新版本信息可以用 txt 来做,简单而且符合版本更新逻辑
|
37
laev 2021-05-14 09:12:50 +08:00
github gist 好像也还合适?
|
38
cy18 2021-05-14 09:17:32 +08:00
数据量不大的话可以考虑用 CNAME 甚至 A 记录实现。
|
39
onion83 2021-05-14 09:59:49 +08:00
|
40
mdkml 2021-05-14 11:37:36 +08:00
我就是这么做的,我是使用域名的 txt 记录做 license 授权,为了随时都可以取消授权。
|
41
Actrace 2021-05-14 15:16:22 +08:00 1
@AoEiuV020 挂 pages 或者 github 仓库是一个很正确的方案。DNS 记录的话,这个思路确实很巧妙,但是很难控制其实效性和准确性,不建议用。pages 速度慢的话,可以用微林的 vxserver 来替代,直接把 github 仓库作为 http 服务发布。
|
42
dorothyREN 2021-05-15 11:36:28 +08:00
即使你把 ttl 设置成 1,你也防不住 dns 递归服务器缓存,dnspod 啥的 都不是标准实现。缓存时间是他们自己控制的,不走 ttl
|
43
AoEiuV020CN 2022-03-24 11:18:45 +08:00
事实证明,不可靠,
我用 dns 配置 app 的广告开关, 通过 dns 关闭广告后,自己测试一点问题都没有,但是看后台数据, 3 天之后还有 1/5 广告展示数, 现在五个月过去了,还有 1/15 , |