博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DNS预解析prefetch
阅读量:6487 次
发布时间:2019-06-24

本文共 1384 字,大约阅读时间需要 4 分钟。

前面的话

  本文将详细介绍DNS预解析prefetch的主要内容

 

概述

  DNS(Domain Name System, 域名系统),是域名和IP地址相互映射的一个分布式数据库。DNS 查询就是将域名转换成 IP 的过程,这个过程短的话 2ms 几乎无感,长则可能达到几秒钟

  当浏览器访问一个域名的时候,需要解析一次DNS,获得对应域名的ip地址。在解析过程中,按照浏览器缓存系统缓存路由器缓存ISP(运营商)DNS缓存根域名服务器顶级域名服务器主域名服务器的顺序,逐步读取缓存,直到拿到IP地址

  DNS Prefetch,即DNS预解析就是根据浏览器定义的规则,提前解析之后可能会用到的域名,使解析结果缓存到系统缓存中,缩短DNS解析时间,来提高网站的访问速度

 

使用

  现代浏览器在 DNS Prefetch 上做了两项工作:

  1、html 源码下载完成后,会解析页面的包含链接的标签,提前查询对应的域名

  2、对于访问过的页面,浏览器会记录一份域名列表,当再次打开时,会在 html 下载的同时去解析 DNS

  DNS预解析分为以下两种:

【自动解析】

  浏览器使用超链接的href属性来查找要预解析的主机名。当遇到a标签,浏览器会自动将href中的域名解析为IP地址,这个解析过程是与用户浏览网页并行处理的。但是为了确保安全性,在HTTPS页面中不会自动解析

【手动解析】

  在页面添加如下标记

  上面的link标签会让浏览器预取"img.alicdn.com"的解析

  希望在HTTPS页面开启自动解析功能时,添加如下标记

  希望在HTTP页面关闭自动解析功能时,添加如下标记

  并非所有页面都要手动解析,一般在整个站点的入口页做这个工作就行了,毕竟一个站点下用到的大多数域名都会在首页体现

 

作用

  DNS Prefetch有效缩短了DNS的解析时间

  如果浏览器最近将一个域名解析为IP地址,所属的操作系统将会缓存,下一次DNS解析时间可以低至0-1ms。 如果结果不在系统本地缓存,则需要读取路由器的缓存,则解析时间的最小值大约为15ms。如果路由器缓存也不存在,则需要读取ISP(运营商)DNS缓存,一般像taobao.combaidu.com这些常见的域名,读取ISP(运营商)DNS缓存需要的时间在80-120ms,如果是不常见的域名,平均需要200-300ms。一般的网站在运营商这里都能查询的到,所以普遍来说DNS Prefetch可以给一个域名的DNS解析过程带来15-300ms的提升,尤其是一些大量引用很多其他域名资源的网站,提升效果就更加明显了

  浏览器底层缓存进行了建模,当Chrome浏览器启动的时候,就会自动的快速解析浏览器最近一次启动时记录的前10个域名。所以经常访问的网址就没有DNS解析的延迟,打开速度更快

 

最后

  DNS Prefetch 是对网页性能优化的一个通用方案,对国际化的站点来说可能效果更加明显。学习成本和理解成本低,可以放心大胆地用到自己的网页上

  以小火柴的前端小站为例

 

转载于:https://www.cnblogs.com/xiaohuochai/p/9185622.html

你可能感兴趣的文章
苹果AppStore如何申请加急审核
查看>>
SpringBoot 使用Swagger2打造在线接口文档(附汉化教程)
查看>>
Mysql一个表编码的坑,mark一下
查看>>
JS动态事件绑定问题
查看>>
在WPF应用程序中利用IEditableObject接口实现可撤销编辑的对象
查看>>
android 8 wifi wifi 扫描过程
查看>>
phalcon的save方法保存失败?
查看>>
获取任意链接文章正文 API 功能简介
查看>>
线程类的常见方法介绍
查看>>
Spring连接数据库的几种常用的方式
查看>>
MS CRM 2011 Schedule Report & Email Subscription
查看>>
Linux2.6内核驱动移植参考
查看>>
去哪儿搜索引擎QSearch设计与实现
查看>>
POJ 2255 Tree Recovery (二叉树)
查看>>
There are two ways for Datatable download as excel
查看>>
PCA误差
查看>>
烦人的数据不一致问题到底怎么解决?——通过“共识”达成数据一致性
查看>>
抽象类详解
查看>>
《Oracle高性能自动化运维》一一2.2 队列锁(Enqueue Lock)
查看>>
《jQuery Mobile入门经典》—— 2.3 使用JavaScript完成功能
查看>>