0%

浏览器的 DNS 缓存机制

经常做Web开发的工程师,都会遇到需要将某个域名绑定到特定IP上,进行测试的情况。大家一般都会用修改hosts文件的方式来解决,但是经常也会遇到修改hosts不生效的情况,而且有时生效,有时不生效的情况也有发生,这到底是为什么呢?

简单来说,一条域名的DNS记录会在本地有两种缓存:浏览器缓存和操作系统(OS)缓存。在浏览器中访问的时候,会优先访问浏览器缓存,如果未命中则访问OS缓存,最后再访问DNS服务器(一般是ISP提供),然后DNS服务器会递归式的查找域名记录,向根域名服务器请求顶级域名服务器的地址,向权威域名服务器请求真正的IP地址…

DNS记录会有一个ttl值(time to live),单位是秒,意思是这个记录最大有效期是多少。经过实验,OS缓存会参考ttl值,但是不完全等于ttl值,而浏览器DNS缓存的时间跟ttl值无关,每种浏览器都使用一个固定值。

更多信息,请参考 为什么修改hosts不立即生效?–浏览器DNS缓存机制分析