从输入url到页面展现(三)通过DNS将域名解析为IP地址以及dns-prefetch的好处

news2024/7/6 20:17:48

前言

上一节我们用直白的话讲了一下浏览器解析url,而浏览器并不具备发送网络消息的能力,所以委托操作系统发送,而这里的第一步,就是去找到对应web服务器的ip地址,并且对互联网和小子网有了一个认识。

这一节呢说一下我们输入的域名是如何转换为IP地址从而找到服务器的,没错,涉及到DNS服务器,同时讲述了一下在前端开发中,使用dns-prefetch的好处

 

目录

前言

1. url为什么更推崇域名而不是IP地址?

2. 用DNS服务器查IP地址

3. DNS预获取的应用


1. url为什么更推崇域名而不是IP地址?

其实我们访问一个web服务器,输入 http://www.aa.com/hello/index.html 或者是 输入对应的服务器ip地址都可以,比如输入 http://10.33.22.11/hello/index.html 。但我们看市面上的网站,没有哪家的网站是让你输入IP地址去访问的,对吧,都是输入域名的。域名对于商家来说的主要作用是推广,而域名的三要素呢,简短易记、有意义、含义符合产品定位,我们可以看一下市面上的网站域名是否符合这三要素。所以,商家推广出来的域名一定是希望我们用户可以快速记住的,而不是让我们记住他们的IP地址。

还有一点呢,我们上一节说到,找那台web服务器,还是要通过IP地址去找,却又不是通过域名去找了。你想啊,子网之间的路由器,需要知道“下一跳”去哪个路由器,所以,路由器是处理一长串域名效率高呢,还是处理几个字节的数字IP地址效率高呢。

所以是不是挺矛盾的,我们输入的域名,让路由器去处理IP地址,其实没啥矛盾不矛盾的,计算机还处理二进制呢,但我们上网,聊天,看视频,写代码,谁010101的写呢,机器不就是干这个事的,我们人干人事,机器干机器事

2. 用DNS服务器查IP地址

我们前面说过,浏览器没有发送http消息的能力,他得委托操作系统,也就是他得去触发网卡的能力,你的电脑如果没有网卡,那就上不了网了,这个很好理解对吧。而通过域名查询IP地址呢,就需要一个DNS服务器,而正好我们的电脑上有DNS解析器,或者叫DNS客户端。你有没有见过这个界面:

我们网站上线前呢,都会注册域名,再将域名和IP地址做绑定,这个时候这个绑定关系就会被存到DNS服务器上。DNS客户端拿到 www.aa.com 发送给DNS服务器,DNS服务器将对应的xx.xxx.xx.x的IP地址返回来,我们本机的DNS客户端将IP地址存存起来,存到哪里了呢,当然是存到你所使用的这个浏览器制定的内存空间内。这样,我们输入带有域名的url后,很快,我们看着是在浏览器上输入的域名+路径+文件名,其实浏览器这个时候是将IP地址、url、请求信息等都传给了操作系统。

3. DNS预获取的应用

我们在网站开发中,可以在HTML文档的head头进行DNS预获取的工作,以优化我们的网站性能。比如京东M首页的DNS预获取代码

这项工作可以在请求资源之前尝试域名解析,比如我们页面中包含某些需要加载的js css image这些,例如我们页面中会有一个 http://www.abc.com/hello/a.png 的图片,在head头写上

<html>
    <head>
        <title>从输入url到页面展现</title>
        <link rel=”dns-prefetch” href=”//www.abc.com”>
    </head>
    <body>
        <img src="http://www.abc.com/hello/a.png" />
    </body>
</html>

可以在一定程度上加速这个图片的渲染。

注意:需要预解析的这个域名不能和当前浏览器域名相同,因为你输入的这个url带有的域名已经被浏览器解析了,就没有必要再做预解析了。

当浏览器从(第三方)服务器请求资源时,必须先将该跨域域名解析为 IP 地址,然后浏览器才能发出请求。此过程称为 DNS 解析。DNS 缓存可以帮助减少此延迟,而 DNS 解析可以导致请求增加明显的延迟。对于打开了与许多第三方的连接的网站,此延迟可能会大大降低加载性能。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

换个角度使用Redis去解决跨域存取Session问题

系列文章目录 Redis缓存穿透、击穿、雪崩问题及解决方法 Spring Cache的使用–快速上手篇 分页查询–Java项目实战篇 全局异常处理–Java实战项目篇 该系列文章持续更新&#xff0c;更多的文章请点击我的主页查看哦&#xff01; 文章目录 系列文章目录前言一、遇到的情况二、解…

golang 云效私有模块依赖拉取配置

相关文档 阿里官方文档 go 环境变量配置 export GOPRIVATEcodeup.aliyun.com 凭证设置 非常找重要,https密码配置克隆账户和克隆密码后续会用到 在 可以在 netrc 文件中指定凭据 Linux\MacOS 文件应该存放在执行账户的根目录下&#xff0c;即&#xff1a;~/.netrc sudo v…

SAS 9.3软件安装包下载及安装教程 办公软件

SAS 9.3软件简介&#xff1a; SAS 9.3是目前行业软件中的一款专业的数据统计分析软件&#xff0c;其核心功能包括高级分析、商业智能、客户智能、数据管理、风险管理和欺诈与安全智能六大模块&#xff0c;通过sas软件提供创新的分析、商业智能和数据管理软件与服务&#xff0c…

3Dsmax丨3dsmax2016软件下载安装教程 含全版本软件详细安装流程

大家好~随着计算机技术的发展&#xff0c;3D建模在各个行业中被广泛应用。以游戏行业为例&#xff0c;通过3D建模模型制作、灯光制作、材质渲染、细节润色、渲染合成等能够制作出游戏原神、王者荣耀、和平精英、英雄联盟、明日之后、光遇、哈利波特、剑网3、我的世界、第五人格…

SQL——关于bjpowernode.sql的33道经典例题之1-17

目录 1 查询每个部门最高薪水的人员名称 2 查询哪些人的薪水在部门平均薪水之上 3 查询每个部门的平均薪水等级 3.1 每个部门的平均薪水的等级 3.2 每个部门的平均的薪水等级 4 查询最高薪水&#xff08;不用max函数&#xff09; 5 查询平均薪水最高的部门的部门编号 …

如何使用 GPT-4 为博客目录页打造炫酷前端效果

前不久我用 cmd markdown 写了篇文章《项目 TO 的自我修养》&#xff0c;文章的目录如下&#xff1a; 当我把它发布到线上后&#xff0c;目录却只展示出了二级标题&#xff1a; 这哪行&#xff01;我猜这个可能就是加个配置啥的就能修复。于是马上就问 GPT-4 怎么办&#xff1f…

25.SSM-SpringMVC延续--拦截器与异常处理思想

目录 一、拦截器。 &#xff08;1&#xff09;拦截器的作用。 &#xff08;2&#xff09;拦截器与过滤器的区别。 &#xff08;3&#xff09;拦截器的方法。 &#xff08;4&#xff09;拦截器的快速入门。 &#xff08;5&#xff09;多拦截器。 &#xff08;5.1&#xf…

哈工大软件构造-设计模式笔记

文章目录 UML简单知识1&#xff0e;单例模式2.工厂方法模式3&#xff0e;迭代器模式4&#xff0e;策略模式5&#xff0e;建造者模式6&#xff0e;模板方法模式7&#xff0e;代理模式8&#xff0e;责任链模式9&#xff0e;抽象工厂模式10&#xff0e;适配器模式11&#xff0e;观…

计算机操作系统复习记录(总结 —— 快速入门和快速复习)

1. 操作系统 概念&#xff1a;是控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分配&#xff0c;以提供给用户和其它软件接口和环境&#xff0c;它是计算机系统中最基本的系统软件。 功能和目标&#xff1a; &#xff08;1&…

数据库同步 Elasticsearch 后数据不一致,怎么办?

1、实战线上问题 Q1&#xff1a;Logstash 同步 postgreSQL 到 Elasticsearch 数据不一致。 在使用 Logstash 从 pg 库中将一张表导入到 ES 中时&#xff0c;发现 ES 中的数据量和 PG 库中的这张表的数据量存在较大差距。如何快速比对哪些数据没有插入&#xff1f;导入过程中&am…

六:内存回收

内存回收&#xff1a; 应用程序通过 malloc 函数申请内存的时候&#xff0c;实际上申请的是虚拟内存&#xff0c;此时并不会分配物理内存。 当应用程序读写了这块虚拟内存&#xff0c;CPU 就会去访问这个虚拟内存&#xff0c; 这时会发现这个虚拟内存没有映射到物理内存&…

系统安全及应用

目录 一、账号安全控制 1&#xff09;系统账号清理 2&#xff09;密码安全控制 chage命令 示例 3&#xff09;命令历史限制 4&#xff09;终端自动注销 总结 账号安全 密码安全 二、系统引导和登录控制 1&#xff09;使用su命令切换用户 用途及用…

【学习笔记】字节数据和字节字符串(b“ “)那些事

文章目录 0 前言1 先来看看C语言中怎么处理这种字节数据1.1 使用总结 2 再来看看Python当中是怎么处理字节数据的 0 前言 最近在尝试用PyQt做一个上位机&#xff0c;遇到很多关于字节字符串的问题&#xff0c;这里简单总结几个关键点。 1 先来看看C语言中怎么处理这种字节数据…

RK3568平台开发系列讲解(Linux系统篇)共享内存的创建和映射过程

🚀返回专栏总目录 文章目录 一、共享内存的创建和映射过程流程梳理二、如何创建共享内存?三、如何将共享内存映射到虚拟地址空间?沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们一起学习下共享内存的创建和映射过程。 一、共享内存的创建和映射过程流程梳…

推荐5款重度电脑用户也未必知道的小众软件

作为一个重度电脑用户&#xff0c;你可能会经常使用一些软件来完成各种任务和娱乐。但是你知道有哪些好用的WIN10软件吗&#xff1f;今天我就为你介绍一下我推荐的五款WIN10软件&#xff0c;它们分别是&#xff1a; 1.反恶意软件——Malwarebytes Malwarebytes是一款专业的反…

AOP与SpringBoot使用AOP实例

AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程、面向方面编程&#xff09;&#xff0c;其实就是面向特定方法编程。 动态代理是面向切面编程最主流的实现。而SpringAOP是Spring框架的高级技术&#xff0c;旨在管理bean对象的过程中&#xff0c;主要通过…

浅谈thrift协议+举例通用mockserver如何实现

目录 简单来说&#xff1a; 举个例子&#xff1a; 简单来说&#xff1a; 1&#xff09;是一个跨平台跨语言的通信协议&#xff0c;定义和创建跨语言服务&#xff0c;是一个高性能、轻量级RPC框架。 2&#xff09;开发者无需关注不同语言/相同语言服务间如何通信&#xff0c;…

基于html+css的图片展示15

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

什么是Python?

目录 Python简介 Python发展史 Python优点与缺点 Python现如今的应用领域 总结 Python简介 Python是一种高级、解释型、面向对象的动态编程语言&#xff0c;由Guido van Rossum在1989年创建&#xff0c;首次发布于1991年。 Python设计的哲学是优雅、清晰、简单&#xff0c…

Windows逆向安全(一)之基础知识(八)

if else嵌套 这次来研究if else嵌套在汇编中的表现形式&#xff0c;本次以获取三个数中最大的数这个函数为例子&#xff0c;分析if else的汇编形式 求三个数中的最大值 首先贴上代码&#xff1a; #include "stdafx.h"int result0; int getMax(int i,int j,int k)…