网站域名基础⑱域名缓存 性能与一致性的权衡

网站域名域名基础 域名缓存 性能与一致性的权衡

解析能快到几毫秒,靠的是"记性"——但记性太好,改配置就成了灾难。域名缓存是性能与一致性之间的讨价还价,主角是那个三字母参数:TTL。

缓存藏在好几层

浏览器有一份(Chrome 就有自己的 DNS 缓存),操作系统有一份(本机进程共用),递归服务器还有一大份(替全网记)。一次查询从近到远逐层找,任何一层命中,都省掉后面所有路程。

TTL:答案的保质期

每条 DNS 记录都带 TTL(Time To Live),单位秒,意思是"这条答案允许被缓存多久"。TTL 一天,全网一天不用再问权威,查询省了,但你改解析最快也要一天才传遍全网;TTL 五分钟,切换快,但权威服务器要挨更多的问。鱼和熊掌,全在这一个数上。

改解析前,我固定做的一件事

提前 24 小时把 TTL 调低到 300 秒,等全网缓存按旧 TTL 过期、大家手里都只剩"短命"答案了,再正式改记录——切换窗口从"最长一天"缩到"五分钟左右"。改完观察稳定,再放心把 TTL 调回常规值。

查不到也是一种缓存

有个反直觉的点:查一个不存在的域名,"不存在"(NXDOMAIN)这个答案本身也会被缓存一阵子,叫负缓存。刚注册的域名立刻去访问打不开、过一会儿又好了,多半就是它在捣乱——不是你配错了,是上一刻"查无此域"的结果还被记着。

别迷信 TTL=0

把 TTL 设成 0 看似随时生效,实际是让全网每台递归都来实时问权威,查询量暴涨、解析反而变慢。常规业务给几百到几千秒,是性能和灵活性的舒服区间。

缓存针对的是普通英文名字。如果名字本身就是中文呢?下一篇先说底层的那道编码转换:punycode。

本文收录于徐果萍文集《论持久站 网站域名》,徐果萍博客原创首发。

扫描二维码推送至手机访问。

版权声明:本文由徐果萍博客网发布,如需转载请注明出处。

本文链接:https://www.xuguoping.net/wangzhanyuming/yumingjichu_018.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。