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]

时间: 2024-09-25 20:37:06

DNS优化的原理和方法的相关文章

[置顶]群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法【附C#群蚁算法完整项目代码】

若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样的任务,所以就好好把基础研究了一下,驱动式学习,目标明确,所以还是比较快去接受和理解,然后写代码实现就好了.今天就带领大家走近TSP问题以及群蚁算法.  机器学习目录:[目录]数据挖掘与机器学习相关算法文章总目录 本文原文地址:群蚁算法理论与实践全攻略--旅行商等路径优化问题的新方法  1.关于旅行

SQL优化器原理-Metadata

这是MaxCompute有关SQL优化器原理的系列文章之一.我们会陆续推出SQL优化器有关优化规则和框架的其他文章.添加钉钉群"关系代数优化技术"(群号11719083)可以获取最新文章发布动态(二维码在文章末尾). 简介 SQL是一种关系代数,在进行关系代数等价转换时,我们利用Metadata获得更多的上下文和数据信息,而从获得更优的执行计划.为了进一步介绍Metadata如何让优化器更加"Smart",接下来会先介绍几种使用Metadata的场景. 场景 SEL

SQL优化器原理 - Auto Hash Join

这是MaxCompute有关SQL优化器原理的系列文章之一.我们会陆续推出SQL优化器有关优化规则和框架的其他文章.添加钉钉群"关系代数优化技术"(群号11719083)可以获取最新文章发布动态(二维码在文章末尾). 本文主要描述MaxCompute优化器实现的Auto Hash Join的功能. 简介 在MaxCompute中,Join操作符的实现算法之一名为"Hash Join",其实现原理是,把小表的数据全部读入内存中,并拷贝多份分发到大表数据所在机器,在 m

优化mysql数据库的方法

优化mysql数据库的方法 在一个数据库中创建大量的表,那么执行打开,关闭,创建(表)的操作就会很慢. 2:mysql使用内存 a: 关键字缓存区(key_buffer_size)由所有线程共享 b: 每个连接使用一些特定的线程空间.一个栈(默认为64k,变量thread_stack),一个连接缓冲区(变量net_buffer_length)和一个结果缓冲区(net_buffer_length).特定情况下,连接缓冲区和结果缓冲区被动态扩大到max_allowed_packet. c:所有线程共

颜色的选择原理及方法

高光,中间调,暗部和颜色的选择原理及方法分析, 制作精准的选区,只对想要调整的区域进行调整,而不影响其他区域,是高质量和高效率完成后期调整的重要一步.通过这段时间的学习,把各地方搜罗来的方法结合自己的理解做了这个简单教程,我想这一定是初学者最想了解和知道的.现在很多的调色教程里都有各种通道的计算,有的DX也不说这是为什么,往往搞的初学者一头雾水,不能很好的理解消化,其实他们用计算的目的一部分就是在做选区.做这个简单的教程的目的就是希望能对初学者以启迪(老手们可以一掠而过,呵呵),同时也能得到大家

简化网页 优化WEB应用的方法

web|网页|优化 在最近的项目中,我发现许多过于臃肿的网页.对于内联网中的网站而言,这一般不会造成什么问题.不过,当你通过互联网向外发布网页时,性能可能是我们关心的主要问题--毕竟,多数用户并非通过高速连接访问网站.本周,我来分析一下优化WEB应用的方法. 常见问题与可能的优化方案 加载网页的时间过长,这仅仅是WEB用户的常见投诉之一,但这也是最明显的问题.WEB开发者的主要问题在于:他们认为自己的平台满足一个目标用户群.但用户的计算机配置与互联网连接速度各不相同,所以开发者应能满足用户的最低

利用B/S网络安装客户端实现自动分发系统的原理及方法

客户端|网络 /*Author:yekin-yu Date:10/30/2003利用B/S网络安装客户端实现自动分发系统的原理及方法本站作品版权作者所有,其他网站或媒体如要转载请署名作者和出处!*/ 一.用VC++写一个动态链接库文件如Install.dll 实现功能: 1.自动更改IE的安全级别启用未签名的ActiveX控件为安装可执行exe文件做好准备; 2.自动判断浏览者受控端是否安装了客户端安装程序: 3.自动判断浏览者的操作系统,而转向相应的客户端程序安装界面: 4.自动判断受控端的客

一天把长尾关键词优化到首页的方法

如果你是一个新站,PR很低,如果给你一天的时间能不能把588指数的长尾关键词优化到首页?这里就是来给大家谈谈怎么优化长尾关键词的方法!或者这个对高手来说是很简单的一件事情,我一直相信一个道理就是"厚积而薄发",如果我们每天都做到这种小积累,早晚有一天网站让你意想不到的流量! 话不多说,先看我优化的词   这个指数对于PR2的小网站来说,也不是低的了,我第一步是采集相关的内容然后进行伪原创.小站点收录还算不错,不到一个小时,文章就都被收录了. 我们在每篇文章里面设置好标签"雪纺

C#开发终端式短信的原理和方法

简介 没发过短信的年轻人肯定是属于那种受保护的稀有动物,通讯发达的今天短信已经成为人们交流的重要手段,其中也蕴含着巨大的市场和经济利益,掌握短信技术的人才也受到各大公司的追捧是目前职场上耀眼的明星.本文介绍了短信的原理和实现方法,重点说明了短信的编码方式.AT指令以及用C#实现串口通讯的方法. 前言 目前,主有三种发送短信的方式: 1. 网关方式:就是向当地的电信部门申请,不需要额外的设备,适用于大型的通信公司,像华为.傲天.中兴.亚信等. 2. 终端方式:就是借助像GSM MODEM之类的设置