===========================================
浏览器访问的DNS缓存机制
参考:https://blog.csdn.net/realmeh/article/details/22663807
===========================================

关于浏览器的DNS缓存机制,有一篇详细的文章描述:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/

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

DNS查询顺序:浏览器缓存→系统缓存→路由器缓存→ISP DNS 缓存→递归搜索

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

据说修改主机的Hosts文件,可以清除DNS缓存。为什么修改hosts文件之后,有时会立刻生效,有时却一直不生效呢?
其实原因很简单,Hosts修改的是OS的DNS缓存,而不是浏览器的DNS缓存:
例如:我00秒的时候使用chrome访问过www.google.com.hk,此时浏览器DNS缓存产生,然后我修改了hosts文件,将www.google.com.hk指向本地127.0.0.1,然后在05秒的时候尝试再次访问这个地址,因为浏览器DNS缓存未过期,所以hosts修改无法体现出来。
另一种情况下,我很久都没有访问www.baidu.com了,然后我修改了hosts文件,将其指向127.0.0.1,这时因为浏览器没有DNS缓存,所以会查询操作系统中的DNS缓存,结果此时hosts文件生效!

如何清除浏览器的DNS缓存呢?
1、chrome
chrome对每个域名会默认缓存60s。
chrome://chrome-urls/可以看到chrome所有的配置界面。chrome://dns或者chrome://net-internals/#dns可以查看chrome浏览器的dns缓存信息,点击“Clear host cache”+然后选择"clear cache"和 " flush socket",可以清空chrome的dns缓存。

2、firefox
network.dnsCacheEntries:缓存的数量
network.dnsCacheExpiration:dns缓存的时间
network.dnsCacheExpirationGracePeriod:dns缓存的时间,设置为0表示不缓存

如果一个域名的DNS解析结果会有多个的话(A记录列表),浏览器是如何处理的呢?
Chrome浏览器会优先向第一个IP发起HTTP请求,如果不通,再向后面的IP发起HTTP请求。

Firefox有dns缓存功能,但是默认缓存时间只有1分钟,可以通过修改该默认值加快DNS解析速度,方法如下:
打开一个新的窗口,地址栏输 入 about:config,回车,进入设置界面。然后搜索 network.dnsCacheExpiration ,把原来的60改成 6000(表示缓存6000秒),再搜索network.dnsCacheEntries 把默认的20改成1000(表示缓存1000条)。如果没 有上面两个项目,新建它们即可,新建条目类型为整数型。 当然也可以按照需要设置成其它的值。
但是dns缓存太久了也会出问题,比如有的网站ip换了,就无法访问了。
针对这样的问题,还可以安装一个 firefox 插件来开启或者 关闭dns cache功能,https://addons.mozilla.org/zh-CN/firefox/addon/5914 。

IE解决方式:

禁用DNS缓存的方法,将下面内容保存为注册表文件,在运行写入注册表:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"DnsCacheEnabled"=dword:00000000
"DnsCacheTimeout"=dword:00000000
"ServerInfoTimeOut"=dword:00000000

写入注册表以后IE将不再缓存DNS,我们对hosts便会立即生效,无需再重启浏览器。

如果需要恢复IE的DNS缓存,只需清楚我们之前写入的注册表内容。跟上面的方法一样:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"DnsCacheEnabled"=-
"DnsCacheTimeout"=-
"ServerInfoTimeOut"=-

================================
OS的TTL缓存
================================
不同的操作系统,它的TTL值是不相同的,默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。笔者单位使用的是Windows 2000服务器,TTL值默认为128,如果将该值修改为255,那么局域网内的用户就会以为这个服务器是Linux系统或UNIX系统,那么他们就会针对Linux系统或UNIX系统来查找Windows 2000服务器的安全漏洞,不过他们是不会找到什么安全漏洞的,这样一来,服务器就安全多了。

修改TTL值其实非常简单。通过注册表编辑器就可以实现,点击“开始→运行”,在“运行”对话框中输入“regedit”命令并回车,弹出“注册表编辑器”对话框,展开“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters”,找到“DefaultTTL”,将该值修改为十进制的“255”,重新启动服务器系统后即可。

Windows操作系统下查看TTL时长:命令行执行ipconfig displaydns。目前Win查看是95s。

微软windows下如何清空dns

  在微软windows下,你可以用命令ipconfig /flushd ns来清空dns 缓存内容。

  你也可以用命令ipconfig /displaydns 来查看dns缓存内容。

Mac OSX下如何清空dns缓存

  在Mac OSX中,你可以用这个命令lookupd -flushcache 来清空保留的缓存。

  bash-2.05a$ lookupd -flushcache

转载于:https://www.cnblogs.com/yickel/p/10961963.html

通过负载均衡器+域名实现容灾切换-(3)浏览器的DNS缓存过程相关推荐

  1. 通过负载均衡器+域名实现容灾切换-(8)基于DNS解析的GSLB在BS架构中应用实践(转)(2)...

    ================================================================================================= 摘自 ...

  2. 通过负载均衡器+域名实现容灾切换-(8)基于DNS解析的GSLB在BS架构中应用实践(转)(1)...

    ================================================================================================= 摘自 ...

  3. 通过负载均衡器+域名实现容灾切换-(9)GSLB典型产品-F5简介

    ======================================== F5和Ngnix的区别&应用 摘自:https://www.cnblogs.com/Lonelydancer/ ...

  4. 通过负载均衡器+域名实现容灾切换-(5)GSLB SLB NLB概念

    ================================ SLB介绍 ============================= 服务器负载均衡(Server Load Balancing,S ...

  5. 【华为云技术分享】云小课 | 容灾切换:业务一键切换到容灾站点

    摘要:SDRS的容灾切换有切换和故障切换两个功能.当生产站点进行计划性的停机维护,可以在停机维护前通过切换功能将生产站点的业务切换到容灾站点,以保持业务的连续性.当生产站点意外故障,已经不能对外提供服 ...

  6. 【Redis】redis cluster模式实现双机房容灾切换

    Redis的cluster集群模式能够自动实现主从之间的自由切换,所以在单个机房中Redis cluster集群中,当Master宕机后,Slave会被其他Master投票选举为新的Master,从而 ...

  7. 【Fastdfs】Fastdfs实现双机房容灾切换

    Fastdfs被用来作为文件存储,在实际的生产中会对其进行灾备处理,下面我们来探究Fastdfs怎么实现双机房的容灾切换. 目录 一.Fastdfs相关知识 FastDFS集群可支持的规则 二.Fas ...

  8. 云原生容器平台的容灾

    目录 引言 什么是业务连续性 什么是容灾 什么是灾难恢复 容灾的关键指标 容器平台的容灾 容器应用对业务连续性的要求 容器平台实现容灾的挑战 容器应用实现容灾的原则 容器平台的容灾实现思路 基于备份恢 ...

  9. 从0到1:千万级美团端侧CDN容灾解决方案

    CDN已经成为互联网重要的基建之一,越来越多的网络服务离不开CDN,它的稳定性也直接影响到业务的可用性.CDN的容灾一直由美团的SRE团队在负责,在端侧鲜有方案和实践. 本文结合美团外卖业务中的具体实 ...

最新文章

  1. 代理工具Charles使用
  2. windows平台桌面开发技术
  3. JavaScript 项目构建工具 Grunt 实践:安装和创建项目框架
  4. Android之调用系统分享
  5. webview代码实例化_WebView常用类和基本方法详解
  6. QT中QTableWidget清空或删除内容功能
  7. IntelliJ IDEA 2021 for Mac(最好的java开发工具)正式版支持m1芯片
  8. 清华计算机系超算团队,清华大学学生超算团队
  9. 一个简单的划词翻译工具
  10. Spring Boot 开发微信公众号后台
  11. 腾讯翻译君在线翻译怎么翻译整个文件_What?还能翻译年报?!
  12. 如何找到刑事案件的辩点(律师角度)
  13. Win7系统网络共享中心打不开,网络连接标识一直转圈
  14. 服务器数据恢复案例:FreeNAS数据恢复过程记录
  15. 展开操作符:一家人就这么被拆散了
  16. 《数据结构》第四章串,数组和广义表
  17. vite和webpack的区别
  18. 关于新iPad充电的一些误读
  19. PHP开发银联云闪付二维码支付
  20. vue实现商城列表渲染

热门文章

  1. Nancy之基于Self Hosting的补充小Demo
  2. 人们对大数据的几点误解
  3. Docker容器及Spring Boot微服务应用
  4. swift3.0 Runtime 增加属性
  5. TCP/IP入门(4) --应用层
  6. 【分解质因数】【树状数组】【快速幂】codeforces 2014 ACM-ICPC Vietnam National Second Round E. ACM...
  7. js如何往div里写div
  8. SQLServer更改sa用户名
  9. 收到了7封拒信的观后感哈哈哈哈哈哈哈哈哈哈
  10. 苹果的工作官方检索地址