博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
规则9 减少DNS查找
阅读量:5030 次
发布时间:2019-06-12

本文共 1681 字,大约阅读时间需要 5 分钟。

1. DNS

  DNS就是URL和实际宿主服务器之间的一个间接层,将主机名映射到IP地址上。

  如果一个服务器被另外一个具有不同IP地址的服务器替代了,DNS允许用户用同样的主机名来连接到新的服务器。可以将多个IP地址关联到一个主机名,为网站提供高冗余度。

 

2. DNS和TTL

  a. DNS可以被DNS服务器(ISP或局域网的一台特殊的缓存服务器)、操作系统、浏览器缓存;

  b. 只要浏览器在其缓存中保留了DNS记录,就无需请求操作系统。浏览器丢弃该记录时,就会向操作系统询问IP地址,操作系统或者通过其DNS缓存响应,或者将请求发送给远程DNS服务器;

  c. 考虑到IP地址变化以及缓存会消耗内存,因此会有不同的策略周期性的清除缓存中的DNS记录;

  d. Web服务器可以表明记录可以被缓存多久,查找返回的DNS记录包含一个存活时间TTL,该值告诉客户端可以对记录缓存多久;

  e. 操作系统缓存会考虑TTL,浏览器通常忽略并设置自己的时间限制;

  f. 客户端收到的DNS记录的平均TTL值只有最大TTL值的一半,因为DNS解析器自身也拥有TTL。浏览器进行DNS查找时,DNS解析器返回的时间是其记录的剩余时间。对于给定主机,每次执行DNS查找时接收到的TTL值都会变化;

 

3. 浏览器视角

  a. MS Windows 上的DNS缓存由DNS Client服务管理。可以使用ipconfig来查看和刷新DNS Client服务:

    ipconfig /displaydns

    ipconfig /flushdns

    重启系统也可以清空DNS Client服务缓存。重启浏览器会清空浏览器缓存;

  b. IE DNS缓存默认设置

    DnsCacheTimeout——30分钟

    KeepAliveTimeout——1分钟

    ServerInfoTimeout——2分钟

    如果DNS TTL值小于30分钟,对IE浏览器DNS查找频率影响小,因为一旦浏览器缓存了DNS就会设置TTL为30分钟;

    如果发生了错误,就会刷新DNS查找TTL就会比30分钟小;

    Keep-Alive:一个持久的TCP连接将会一直使用(不会进行DNS查找)直到空闲1分钟为止;

    ServerInfoTimeout说明尽管没有Keep-Alive,如果一个主机名没两分钟重用了一次,也无需进行DNS查找。这样如果至少没两分钟重用一个主机名,就可以超过30分钟不需要进行DNS查找;(假设访问IP时没发生错误)

  c. Firefox 配置设置

    network.dnsCacheExpiration——1分钟

    network.dnsCacheEntries——20

    network.http.keep-alive.timeout——5分钟

    DNS记录的缓存时间比其TTL多一分钟,因为这个值很小,所以将TTL设置得很低(低于一小时)很可能增加Firefox中DNS查找次数;

    只能缓存20条DNS记录;

    Fasterfox插件可以修改以上值为1小时、512、30秒;

 

4, 减小DNS查找

  当客户端的DNS缓存为空(浏览器和操作系统都为空),DNS查找数量和Web页面中的唯一主机名数量相等。这包括页面URL、图片、脚本文件、样式表、Flash对象等主机名。

  减少唯一主机名可以减少DNS查找,但是也会潜在的减小页面中并行下载的数量。对于google.com来说,页面只有两个组件,由于每个主机名可以并行下载两个组件,使用一个主机名既减少DNS查找,又优化了并行下载。

  Note: 将组件分别放至少两个,至多4个的主机名下(可以使用CDN),在减少DNS查找和允许并行下载间做出很好的权衡。 

转载于:https://www.cnblogs.com/ustccjw/archive/2013/04/13/3018495.html

你可能感兴趣的文章
01、JAVA开发准备
查看>>
Jenkins+Maven+SVN快速搭建持续集成环境(转)
查看>>
txmpp
查看>>
【Github教程】史上最全github使用方法:github入门到精通
查看>>
抽象工厂模式(Abstract Factory)
查看>>
luogu1373 小a和uim之大逃离 (dp)
查看>>
Redis的Pub/Sub客户端实现
查看>>
springMVC入门(一)------springMVC基本概念与安装
查看>>
Sam做题记录
查看>>
[bzoj] 2453 维护数列 || 单点修改分块
查看>>
IIS版本变迁
查看>>
mybatis09--自连接一对多查询
查看>>
myeclipse10添加jQuery自动提示的方法
查看>>
【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。...
查看>>
软件工程APP进度更新
查看>>
Python 使用正则替换 re.sub
查看>>
CTF中那些脑洞大开的编码和加密
查看>>
IdentityServer流程图与相关术语
查看>>
BirdNet: a 3D Object Detection Framework from LiDAR information
查看>>
icon fonts入门
查看>>