前端开发也要知道的 DNS
DNS是什么
关于这个,网上的说明非常多。通俗一点。DNS其实就是一个电话本翻译系统,用来把域名解析成对应的IP地址;
对于前端来说,DNS就是从浏览器输入域名后,浏览器与DNS服务器交互,最终浏览器向DNS解析返回的IP地址建立TCP连接的过程;
DNS的解析过程
这里网络教程也非常多。这里一张图说明。总结一下:
从输入域名到返回结果,经历的每一步,都可能有缓存。如果有缓存,就不会进行下一步,直到达到全球只有13台的跟域名服务器;
大部分开发能接触到的,只有到本地DNS服务器这一层。针对前端开发来说,也只需要了解到这一层即可。本篇幅重点讨论这几个流程间的交互;
本地DNS服务器配置
使用window Server可以轻易的配置本地DNS服务器。如果你想自己动手试试,可以参考这里
DNS的缓存策略分析
浏览器缓存dns策略
为了测试各个浏览器的DNS缓存,通过如下方式实现;
- 1、dns服务器添加一个新域名
- 2、本地浏览器访问域名
- 3、清除本地缓存(后续会说明如何清除)
- 4、继续访问该域名,查看什么时候不能访问
chrome浏览器
版本 :100.0.4896.88
缓存时间
项目 | 缓存时间 |
---|---|
关闭浏览器后立即打开 | 20分钟+ |
在页面f5刷新 | 20分钟+ |
在页面ctrl+f5(强制)刷新 | 20分钟+ |
新开标签页复制地址enter | 20分钟+ |
缓存清理
网上的方案如下:
在地址栏输入以下地址回车,点击 Clear host cache 即可:
chrome://net-internals/#dns
然而20分钟过去了。浏览器依旧能够访问删除的DNS地址;
于是我加上了 ctrl+shift+delete,删除浏览器缓存,才恢复了正常;