zoukankan      html  css  js  c++  java
  • 关于DNS优化的策略

    前言

    客户端向服务端发起通信,会经过DNS解析查找,本文主要讲的就是关于DNS解析查找的优化

    DNS解析流程

    1. 查找浏览器缓存。

    2. 查找系统缓存。

    3. 查找路由器缓存。

    4. 查找ISP DNS 缓存。

    5. 迭代查询。

    优化思路

    1. 减少DNS查找,避免重定向

    2. 使用浏览器DNS缓存 、计算机DNS缓存、 服务器DNS缓存,防止DNS迭代查询;

    3. 使用Keep-Alive特性 来减少DNS查找的频率;

    4. 使用较少的域名(服务器主机)来减少DNS查找的数量。

    影响DNS缓存的因素

    1. 首先,服务器可以表明记录可以被缓存多久。查找返回的DNS记录包含了一个存活时间(Time-to-live,TTL)值。该值告诉客户端可以对该记录缓存多久。

    2. 尽管操作系统缓存会考虑 TTL 值,但浏览器通常忽略该值,并设置它自己的时间限制。

    3. 此外,HTTP 协议中的 Keep-Alive 特性可以同时覆盖 TTL 和浏览器的时间限制。换句话说,只要浏览器和Web服务器愉快地通信着,并保持 TCP 连接打开的状态,就没有理由进行 DNS 查找。

    4. 浏览器对缓存的 DNS 记录的数量也有限制,而不管缓存记录的时间。如果用户在短时间内访问了很多具有不同域名的网站,较早的 DNS 记录将被丢弃,必须重新查找该域名。

    5. 不过,要记得即便浏览器丢弃了 DNS 记录,操作系统可能依然保持着该记录,这能扭转一下局面,因为无需通过网络发送查询,从而避免了明显的延迟。

    6. 当客户端的DNS缓存为空时(浏览器与操作系统缓存为空时),DNS查找的数量与Web页面中唯一主机名的数量相等。减少唯一主机名的数量就可以减少DNS查找的数量。

    7. 但减少唯一主机名的数量会潜在地减少页面中并行下载的数量。(HTTP1.1,浏览器对于同一个服务器的并行连接数有限制)因此,虽然避免 DNS 查找降低了相应时间,但减少并行下载可能会增加响应时间。所以,在减少 DNS 查找与允许高速并行下载之间做权衡,建议使用 2-4 个服务器主机。

     

    DNS的预解析

    可以通过用meta信息来告知浏览器, 我这页面要做DNS预解析

    <meta http-equiv="x-dns-prefetch-control" content="on" />
    可以使用link标签来强制对DNS做预解析:
    <link rel="dns-prefetch" href="http://ke.qq.com/" />
  • 相关阅读:
    CF 142B Tprimes
    CF 231A Team
    poj 2001 Shortest Prefixes ——字典树入门
    hdu 1039 Easier Done Than Said?
    poj 2528 Mayor's posters
    hdu 1061 Rightmost Digit
    poj 2503 Babelfish
    CF271 A. Beautiful Year
    poj 2752
    CF271 B. Prime Matrix
  • 原文地址:https://www.cnblogs.com/liuXiaoDi/p/13070444.html
Copyright © 2011-2022 走看看