drupal7 WEB性能优化

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

Google Chrome 内置就有 DNS Prefetching 技术 ,而 Firefox 3.5 也引入了这一 新特性。至于 IE,貌似还未支持。

Drupal如何起dns prefetch呢? 先上一段代码.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* hook_html_head_alter()
*/
function themename_html_head_alter(&$header) {
// Enable prefetching.
$header['dns_prefetch_control'] = array(
'#type' => 'html_tag',
'#tag' => 'meta',
'#attributes' => array('http-equiv' => 'x-dns-prefetch-control', 'content' => 'on'),
'#weight' => -10001,
);
$dns_prefetch_domains = array(
'www.google.cn',
'www.baidu.com',
);
foreach ($dns_prefetch_domains as $key => $value) {
$header['dns_prefetch_control_' . $key] = array(
'#type' => 'html_tag',
'#tag' => 'link',
'#attributes' => array('rel' => 'dns-prefetch', 'href' => '//' . drupal_strip_dangerous_protocols(trim($value))),
);
}
}

打开浏览器,就可以看到如下的输出:

1
2
3
<meta content="on" http-equiv="x-dns-prefetch-control">
<link href="//www.google.cn" rel="dns-prefetch">
<link href="//www.baidu.com" rel="dns-prefetch">

script>