一文带你了解什么是浏览器缓存,DNS,CDN及域名解析类型

站长文章22秒前更新 小编
0 0 0

本文主要讲解关于一文带你了解什么是浏览器缓存,DNS,CDN及域名解析类型相关内容,由优网导航(www.uonce.com)提供,欢迎关注收藏本站!

浏览器的缓存机制

当我们使用Ctrl+F5组合键刷新一个页面时,在HTTP的请求头中会增加一些请求头,它告诉服务端我们要获取最新的数据而不是缓存。

Cache-Control

这个HTTP Head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令。

ad

站长导航

优网导航旗下汇集全网优质站长工具,一站式站长工具大全导航网站

可选值 说明
Public 所有内容都将被缓存,在响应头中设置
Private 内容只缓存到私有缓存中,在响应头中设置
no-cache 所有内容都不会被缓存,在请求头和响应头中设置
no-store 所有内容都不会被缓存到缓存或Internet临时文件中,在响应头中设置
must-revalidation/proxy-revalidation 如果缓存的内容失败,请求必须发送到服务器/代理以进行重新验证,在请求头中设置
max-age=xxx 缓存的内容将在xxx秒后失效,这个选项只在HTTP 1.1中可用,和Last-Modified一起使用时优先级较高,在响应头中设置

Cache-Control请求字段被各个浏览器支持的较好,而且它的优先级也比较高,它和其他一些请求字段(如Expires)同时出现时,Cache-Control会覆盖掉其他字段。

Expires

Expires通常的使用格式是Expires: Sat, 25 Feb 2012 12:22:17 GMT,后面跟着一个日期和时间,超过这个时间后,缓存的内容将失效。

Last-Modidified/Etag

Last-Modified字段一般用于表示一个服务器上的资源的最后修改时间,资源可以是静态(静态内容自动加上Last-Modified字段),或者动态的内容(如Servlet提供了一个getLastModified方法,用于检查某个动态内容是否已经更新),通过这个最后修改时间可以判断当前请求的资源是否是最新的。

一般服务器端在响应头中返回一个Last-Modified子弹,告诉浏览器这个页面的最后修改时间,如Last-Modified: Sat, 25 Feb 2012 12:55:04 GMT,浏览器再次请求时,在请求头中增加一个If-Modified-Since: Sat, 25 Feb 2012 12:55:04 GMT字段,询问当前缓存的页面是否是最新的,如果是最新的就返回304状态码,告诉浏览器是最新的,服务器也不会传输新的数据。

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

与Last-Modified字段有类似功能的还有一个Etag字段,这个字段的作用是让服务器给每个页面分配一个唯一的编号,然后通过这个编号来区分当前这个页面是否最新的。

这种方式比使用Last-Modified更加灵活,但是在后端的Web服务器有多台时比较难处理,因为每个Web服务器都要记住网站的所有资源,否则浏览器返回这个编号就没有意义了。

DNS域名解析过程

当一个用户在浏览器中输入www.jb51.net时,DNS解析将会有将近10个步骤,这个过程大体描述如下。

浏览器

浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。

浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

操作系统

如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。

其实操作系统也会有一个域名解析的过程,在Windows中可以通过C:WindowsSystem32driversetchosts文件来设置,你可以将任何域名解析到任何能够访问的IP地址。

在Linux中这个配置文件是/etc/hosts,当解析到这个配置文件中的某个域名时,操作系统会在缓存中缓存这个解析结果,缓存的时间同样是受这个域名的失效时间和缓存的空间大小控制的。

本地区的域名服务器

如果在本机中仍然无法完成域名的解析,就会真正请求域名服务器来解析这个域名了。

在我们的网络配置中都会有“DNS服务器地址”这一项,操作系统会把这个域名设置为本地区的域名服务器(LNDS)。

这个DNS通常都提供给你本地互联网接入的一个DNS解析服务,例如,你是在学校接入互联网,那么你的DNS服务器肯定在你的学校,如果你是在一个小区接入互联网,那这个DNS就是提供给你接入互联网的应用提供商,即电信或者联通。

这个专门的域名解析服务器性能都会很好,它们一般都会缓存域名解析结果,当然缓存时间是受域名的失效时间控制的。

Root Server域名服务器

如果LDNS仍然没有命中,就直接到Root Server域名服务器请求解析。

返回主域名服务器地址

根域名服务器返回给本地域名服务器一个所查询的主域名服务器(gTLD Server)地址。gTLD是国际顶级域名服务器,如.com.cn.org等,全球只有13台左右。

向主域名服务器发送请求

本地域名服务器(Local DNS Server)再向上一步返回的gTLD服务器发送请求。

域名提供商的服务器

接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server通常就是你注册的域名服务器。

例如,你在某个域名服务器提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。

映射关系表

Name Server域名服务器会查询存储在域名和IP的映射关系表,在正常情况下会根据域名得到目标IP记录,连同一个TTL值返回给DNS Server域名服务器。

Local DNS Server缓存

返回该域名对应的IP和TTL值,Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制。

本地系统缓存

把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。

注:在实际的DNS解析过程中,可能还不止这10个步骤,如Name Server也可能有很多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析的过程。

几种域名解析方式

域名解析记录主要分为A记录,MX记录,CNAME记录,NS记录,和TXT记录。

A记录

A代表Address,用来指定域名对应的IP地址,A记录可以将多个域名解析到一个IP地址,但是不能将一个域名解析到多个IP地址。

MX记录

MX表示Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的Mail Server,DNS会将邮件发送到MX记录的服务器,而正常通过Web请求的话,仍然解析到A记录的IP地址。

CNAME记录

CNAME全称为Canonial Name(别名解析)。所谓别名解析就是可以为一个域名设置一个或者多个别名。

NS记录

NS记录,为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS服务器去解析。

TXT记录

为某个主机名或域名设置说明。

CDN工作机制

CDN也就是内容分布网络(Content Delivery Network),它是构筑在现有Internet上的一种先进的流量分配网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。

目前CDN都以缓存网站中的静态数据为主,如CSS,JS,图片和静态页面等数据。用户在先从主站服务器请求到动态内容后,再从CDN上下载这些静态资源,从而加速网页数据内容的下载速度。

CDN架构

一个用户访问某个静态文件(如CSS文件),这个静态文件的域名假如是cdn.jb51.net,那么首先要向Local DNS服务器发起请求,一般经过迭代解析后回到这个域名的注册服务器去解析,一般每个公司都会有一个DNS解析服务器。

这时这个DNS解析服务器通常会把它重新CNAME解析到另一个另外一个域名,而这个域名最终会被指向CDN全局中的DNS负载均衡服务器,再由这个GTM来最终分配是哪个地方的访问用户,返回给离这个访问用户最近的CDN节点。

拿到DNS解析结果,用户就直接去这个CDN节点访问这个静态资源文件了,如果这个节点中所请求的文件不存在,就会再回到源站去获取这个文件,然后再返回给用户。

本文介绍的内容作为一名站长来说是必须要知道的知识,更多关于这方面的知识请查看下面的相关链接

相关推荐: 加速Webpack构建技巧总结

本文主要讲解关于加速Webpack构建技巧总结相关内容,由优网导航(www.uonce.com)提供,欢迎关注收藏本站!Web 应用日益复杂,相关开发技术也百花齐放,这对前端构建工具提出了更高的要求。 Webpack 从众多构建工具中脱颖而出成为目前最流行的构…

© 版权声明

相关文章

暂无评论

暂无评论...