速云科技

浏览器缓存之DNS

对于用户来说,浏览一个网站就是打开浏览器输入域名,然后回车。我们的Web服务器就会给用户返回相应的结果,那么我们首先要从浏览器入手,来考虑在浏览器方面是否有可以进行缓存方法和机制,以及能缓存什么样的数据。

1.1 浏览器DNS缓存

DNS 解析是用户访问网站的第一步,但是其解析的速度似乎容易被网站优化人员忽视。典型的一次 DNS 解析耗费 20-120 毫秒。我们在第一部分已经讲解了DNS相关的知识,也提到了其中的DNS缓存服务器,那么这里我们讲的DNS缓存主要是和浏览器相关的内容。

1.1.1           DNS Prefetching

DNS Prefetching (DNS 预获取)指的是用户在请求某个链接之前,浏览器先尝试解析该链接的域名再将其进行缓存。这样真正请求的时候就不需要进行DNS解析。所以这个方式能减少用户的等待时间,提升用户体验,尤其是在一个页面上涉及到很多不同的域名的时候效果更为明显。

DNS Prefetching特性允许开发者手动控制,告诉浏览器需要解析哪个域名。代码如下:

<link rel=”dns-prefetch” href=”//fonts.googleapis.com”>

<link rel=”dns-prefetch” href=”//google-analytics.com”>

1.1.2           Link Prefetching

Link Prefetching(链接预加载)特性允许开发者在页面加载的时候预先加载他们希望指定的页面或元素。代码如下:

<link rel=”prefetch” href=”http://daker.me/2013/05/hello-world.html” />

<link rel=”prefetch” href=”http://daker.me/assets/images/avatar.png” />

你也能够使用prerendering特性令你的网站速度更快,浏览器能够在后台获取并渲染整个页面,用户点击相应链接时再为用户展示该页面。代码如下:

<link rel=”prerender” href=”http://daker.me/2013/05/hello-world.html” />

注意,上面这两个缓存呢都是HTML5的特性,最新版本的 Safari、Chrome、Firefox 以及 Opera Internet Explorer 9 将支持某些 HTML5 特性。

1.1.3           DNS解析缓存

刚才我们提到的两个HTML5的缓存机制其实是预习帮我们获取数据,然后缓存下来。除了这些,在浏览器正常解析一个DNS的时候,也会将上一次的解析IP地址缓存下来。

注意:浏览器DNS缓存的时间跟DNS服务器返回的TTL值无关。

浏览器在获取网站域名的实际IP地址后会对其IP进行缓存,减少网络请求的损耗。每种浏览器都有一个固定的DNS缓存时间,其中Chrome的过期时间是1分钟,在这个期限内不会重新请求DNS。Chrome浏览器看本身的DNS缓存时间比较方便,在地址栏输入chrome://net-internals/#dns

1

好的,这个是浏览器中涉及到DNS缓存这部分,内容简单,但是对于我们深入理解有很大的帮助,我们可以说连DNS解析都可以缓存,还有什么是不能缓存的呢?事实也是如此。

欢迎留言