文档章节

网站优化应重视 DNS 预获取(DNS Prefetching)

欢乐小金鱼
 欢乐小金鱼
发布于 2015/04/03 16:30
字数 794
阅读 38
收藏 0

网站优化技术总是在进化。今天重新阅读了一下以前的前端优化笔记,发现对于 YSlow 优化 34 条准则关于减少 DNS 查找 (Reduce DNS Lookups)的部分或许应该修正一下了。

DNS 作为互联网的基础协议,其解析的速度似乎容易被网站优化人员忽视。现在浏览器厂商已经有在针对 DNS 进行优化,典型的一次 DNS 解析耗费 20-120 毫秒,减少 DNS 解析数是个优化的方式,而能够缩减 DNS 解析的时间也是有经济效益的事情。这就是浏览器厂商重视 DNS Prefetching 的主要原因。DNS Prefetching 对于性能的收益可以简单的用”DNS 同步请求到异步”来解释,也就是具有此属性的域名不需要用户点击链接就在后台解析,而域名解析和内容载入是串行的网络操作,所以这个方式能减少用户的等待时间,提升用户体验。

Google Chrome 内置就有 DNS Prefetching 技术(注意之前有几个小版本因为这一特性反而带来了性能问题) ,而 Firefox 3.5 也引入了这一 新特性。至于 IE 8,暂时还看不到有什么举措(或许是我没注意到?)。

对于一个网站来说,如果希望能充分利用用户浏览器端的这个功能,可以在页面添加 link 属性的锚点来做到。类似:

<link rel="dns-prefetch" href="http://www.google-analytics.com/">

另外还有这个 x-dns-prefetch-control 也有必要适当用一下。对于某些站点引用了 Google 的某些服务脚本,可能这尤其有用。

另外一种加速 DNS 的途径是考虑使用 pdnsd 之类的缓存 DNS 代理服务器来加速某些 DNS 请求。

在 Chrome 中,可以通过在地址栏输入 about:histograms/DNS 来观测一些有趣的 DNS 性能数据。



今天翻看twitter的源码的时候看到了一下内容:

<link rel=”dns-prefetch” href=”http://a0.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a1.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a2.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a3.twimg.com”/>

<link rel=”dns-prefetch” href=”http://api.twitter.com”/>

查阅了相关资料,知道DNS Prefetch也就是DNS预获取,也是前段优化的一部分。在前段优化中关于DNS的有两点:一是减少DNS的请求次数,第二个就是进行DNS预先获取。

DNS Prefetch 已经被下面的浏览器支持

Firefox: 3.5+
Chrome: Supported
Safari 5+
Opera: Unknown
IE: 9 (called “Pre-resolution” on blogs.msdn.com)
默认情况下浏览器会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,这就是隐式的DNS Prefetch。如果想对页面中没有出现的域进行预获取,那么就要使用显示的DNS Prefetch了,也就是使用link标签:

<link rel=”dns-prefetch” href=”http://api.twitter.com”/>

DNS Prefetch应该尽量的放在网页的前面,推荐放在<meta charset=”/>后面。

PS:可以通过下面的标签禁止隐式的DNS Prefetch。
<meta http-equiv=”x-dns-prefetch-control” content=”off”> 

© 著作权归作者所有

共有 人打赏支持
欢乐小金鱼
粉丝 9
博文 14
码字总数 6977
作品 0
海淀
程序员
DNS Prefetching的两三事

原文还是在简书编写的: DNS Prefetching的两三事 年前年后有点忙,又是追加功能,修改富文本编辑器,又是切我们的整体架构,好久没有更新了,最近同事发现了个有意思的文章,如下,是讲 DN...

乖小鬼YQ
2017/11/29
0
0
预加载系列一:DNS Prefetching 的正确使用姿势

发现 很多人都知道现代浏览器都支持 DNS 的预解析,学名:DNS Prefetching。用法也很简单,就是在html代码里加入这样的 标签 我们之前的用法是在 Head 为2个 静态资源服务器的域名 和 日志图...

有赞前端
2017/08/24
0
0
预加载系列二:让File Prefetching丝丝润滑无痛无痒

所谓 File Prefetching 就是在一个页面加载成功后,默默去预加载后续可能会被访问到的页面的资源。 前端资源预加载其实没啥新鲜的,我们倒腾这个事情的过程却是很有有意思也很有启发性。 ...

有赞前端
2017/08/24
0
0
减少域名DNS解析时间将网页加载速度提升新层次-DNS缓存/预读取/拆分域名

我们知道在用户访问网站时先得经过域名DNS解析这一过程,可能很多人对于DNS解析时间平常并没有太在意。性能稳定、响应时间快的DNS域名解析服务与不稳定、响应过慢的DNS的域名解析时间可能相差...

Joe小桥
2015/10/28
0
0
mod_pagespeed 1.2 发布,Apache网站优化工具

mod_pagespeed是谷歌于2010年底推出Apache服务器自动优化模块,可以对基于Apache的网站的内容进行自动优化以及智能缓存,从而有效提升网页的加载速度,据统计可以提升50%。 谷歌今天发布了m...

oschina
2012/12/20
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

驰狼课堂

http://www.chilangedu.com/

求是科技
12分钟前
0
0
jumpserver 报错"Incorrect string value

申明 本文所有内容参考自jumpserver记录命令无法入库问题 #1773 简介 jumpserver 1.4.0在jumpserver.log中大量报错,错误日志 File "/opt/jumpserver/apps/terminal/api.py", line 246, i...

zhnxin
19分钟前
2
0
用户管理相关配置文件及命令

9月19日任务 2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理 扩展知识 实用小工具 简单命令行下实现Linux/Windows文件互传 前提:使用远程工具Xsh...

robertt15
37分钟前
0
0
presto 架构

presto 介绍 是Facebook开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎 是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏ ⽀持任意数据源(通过扩展式Connect...

张欢19933
37分钟前
0
0
Ajax技术应用

1. 相关概述 1. ajax:即异步js与xml,可以实现客户端与服务端之间数据的异步交互。对于普通的B/S 模式是采用的同步方式,即一次请求必须等待一次服务器响应完成,而异步则是客户端发送请求后...

江左煤郎
38分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部