DNS优化的原理和方法

而整个WPO其实是对浏览器(browser)的加载(load)和解析(parse)过程中的一些消耗行为进行优化, 而load和parse在整个浏览器工作过程中又互相纠结互相作用.

在这篇文字中讨论的更多是FE们能够伸手处理或者通过达成共识的方法来进行快速推动Tech们协助的一些事情.

OK, 我们慢慢把浏览器的工作过程掰细了看吧.

首先, 我们先整一个浏览器如何找到一个网站的简易工作原理 – DNS查询:

首先当用户在浏览器的地址栏中敲入了网站的网址 ( 比如: alibaba.com ) ,这时浏览器会首先通过访问的域名来定位到IP (DNS) 从而找到去哪里获取资源, 这时, 浏览器会依次进行如下查找:

1. 浏览器缓存 :

浏览器首先会在自己的缓存中查找有没有对应的域名 – IP匹配, 如果好运的话, 这里就可以直接尝试去访问资源了, 如果运气平平则往下走吧.

2. 系统缓存 :

浏览器缓存中没有命中, 浏览器会告诉操作系统:”嘿, 我在我自己口袋里没找到, 可能丢了, 我得去你那看看”, 然后, 一个系统进程(?)调取系统中的DNS缓存进行查询, 重复上一条的运气判断…

3. 路由器缓存 :

走到这, 运气还真不太好啊, 操作系统也没辙了, 那怎么办呢, 向路由去要要看吧… 重复运气判断…

4. ISP DNS缓存 :

好吧, 真不知道说运气好还是运气不好了, 不废话, 去ISP (网络提供商) 的DNS缓存服务器中寻找了, 一般情况下, 在ISP端的缓存中都能找到相应的缓存记录了, 不该这么背了, 或者… 您的ISP有够菜…

5. 递归搜索…

最无奈的情况发生了, 在前面都没有办法命中的DNS缓存的情况下, ISP的DNS服务器开始从root域名服务器开始进行递归, 顺序是从.com顶级域名服务器到alibaba的域名服务器, 再没找到…好吧, 您认为您要去的网站真的公开存在么…?

要强调的是, 不只是对网站第一次的域名访问需要做这样一次查询工作, 在对页面中的资源引用的域名解析时一样会有这样的一系列工作. 最明显的就是启用全新域名来做静态资源存储服务时, 基本上上述的1 – 5个步骤都得走上几遍. 才能让新域名在各DNS缓存服务器上留下记录.

在这个话题上, 关于DNS的类似系统级的解决方案不是FE能够控制得了的, 我们q可以在涉及到DNS时有些小Tips来从中做些事情.

好吧, 第一项.DNS相关的优化:

常规实践 : DNS解析的复杂性决定了不当的使用多域名获取资源会造成不必要的性能开销. 在WPO中, 很多优化工作是很艺术的, 在DNS和HTTP这两方面优化是就可以看到这个神奇的艺术性:

DNS的优化, 当然是尽可能少的造成DNS查询开销, 而在HTTP优化的策略中有一项优化措施是避免单域名下连接数的缺陷来进行资源多通道下载, 实施的细节会在 中详细介绍, 在这里只是简单的提一下, 静态资源多域名服务可以绕过浏览器单域名载入资源时并行连接数的限制, DNS优化需要我们尽可能少的域名解析, HTTP优化时需要我们适当的使用多域名服务, 那怎么样让两个优化实践都能够比较好的实施呢? [todo]

优雅降级 : 在某些现代浏览器 ( Google Chrome, Firefox 3.5+ ) 中, 已经能够支持DNS的预取了, 怎么个预取呢? 就是在浏览器加载网页时, 对网页中的或者的href属性中的域名进行后台的预解析(上文中的 1- 5步), 并且将解析结果缓存在浏览器端, 当用户在真正点击链接时, 省去在当下的DNS解析消耗, 把这个消耗过程转嫁到用户无法感知的浏览过程中去.

第一, 现代浏览器已经支持且默认打开了DNS Prefetch的功能. 当然也可以通过浏览器的配置来管理该功能:

用Firefox3.5+可以这样: 浏览器默认就打开了HTTP协议下的DNS预取功能, 默认关闭HTTPS协议下的DNS预取功能, 可通过 about:config 的 network.dns.disablePrefetch 和network.dns.disablePrefetchFromHTTPS <两个选项来控制两种协议下的预取功能.

Chrome管理DNS Prefetch方法暂时缺少.

第二, 可以通过用meta信息来告知浏览器, 我这页面要做DNS预取:

第三,可以使用link标签来强制对DNS做预取:

[todo DEMO]

(0)

相关推荐

  • 提示dns服务错误怎么办 dns错误问题多种解决方法

    不知道大家有没有遇到过输入网址打开之后出现网页打不开,提示dns错误的情况,笔者以前遇到不少类似的情况,不过多数是由于以下原则造成的,今天笔者也接到电脑百事网网友的电脑故障求助,一网友最近一两天使用电 ...

  • LOL登陆出现未知错误怎么办:[1]DNS优化

    在LOL英雄联盟时,出现"未知错误"而导致登陆LOL失败,对此我们可以通过以下方法来修复LOL客户端程序. 操作方法 01 导致LOL登陆失败出现"未知错误"的 ...

  • 360安全卫士中的DNS优化功能怎么使用

    我们在电脑中,可以使用360安全卫士中的DNS优化功能,让电脑的上网更加流畅,今天就跟大家介绍一下360安全卫士中的DNS优化功能怎么使用的具体操作步骤.1. 首先打开电脑,找到电脑中的360安全卫士 ...

  • Windows10系统DNS解析失败的解决方法

    一位朋友告诉我,说他的笔记本安装的是Windows10系统,打开浏览器时显示:您访问的网页出错了!(DNS解析失败). 如何解决Windows10系统DNS解析失败的问题呢? 操作方法 01 Wind ...

  • 巧用腾讯电脑管家来为DNS优化

    电脑上网卡慢,清理了浏览器缓存.也重新设置了注册表,但网速还是不见有所变化,别急,赶快用腾讯电脑管家来为DNS服务器进行优化选择吧 操作方法 01 在腾讯官网上下载并安装腾讯电脑管家 02 然后点击右 ...

  • 关于Linux操作系统DNS包卸载和安装方法

    下面给大家详细解答下在Linux操作系统下DNS包卸载和安装方法: [root@linux-tysroot]#rpm-qa|grepbindbind-9.2.1-16--这个版本的DNS不太稳定,所以 ...

  • 分享网站内链优化的三个方法

    现在一个网站的优化基本上有几部分构成:外链+内链+优质内容+推广,内链作为其中一个重要因素起到很大作用,有很多站长对内链的布局很是头疼,不知道如何布局,有的站长也会走入很多内链布局的误区,为了关键词排 ...

  • 可以对Firefox内存占用及速度进行优化的10个方法

    目前,Firefox的全球占有率已经超过10%,但也经常听到有人抱怨它占用内存太多,或者速度变慢。 的这篇文章,给了10个可以对Firefox内存占用及速度进行优化的方法。 1. PDF Downlo ...

  • Windows7系统内存优化的九大方法

    方法如下: 1、优化内存中的数据:在 Windows中,驻留内存中的数据越多,就越要占用内存资源.所以,桌面上和任务栏中的快捷图标不要设置得太多.如果内存资源较为紧张,可以考虑尽量少用各种后台驻留的程 ...