本文主要讲解关于一文带你了解什么是浏览器缓存,DNS,CDN及域名解析类型相关内容,由优网导航(www.uonce.com)提供,欢迎关注收藏本站!
浏览器的缓存机制
当我们使用Ctrl+F5组合键刷新一个页面时,在HTTP的请求头中会增加一些请求头,它告诉服务端我们要获取最新的数据而不是缓存。
Cache-Control
这个HTTP Head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令。

站长导航
优网导航旗下汇集全网优质站长工具,一站式站长工具大全导航网站
可选值 | 说明 |
---|---|
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状态码,告诉浏览器是最新的,服务器也不会传输新的数据。

AI 工具导航
优网导航旗下AI工具导航,精选全球千款优质 AI 工具集
与Last-Modified字段有类似功能的还有一个Etag字段,这个字段的作用是让服务器给每个页面分配一个唯一的编号,然后通过这个编号来区分当前这个页面是否最新的。
这种方式比使用Last-Modified更加灵活,但是在后端的Web服务器有多台时比较难处理,因为每个Web服务器都要记住网站的所有资源,否则浏览器返回这个编号就没有意义了。
DNS域名解析过程
当一个用户在浏览器中输入www.jb51.net
时,DNS解析将会有将近10个步骤,这个过程大体描述如下。
浏览器
浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。
浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。

免费在线工具导航
优网导航旗下整合全网优质免费、免注册的在线工具导航大全
操作系统
如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的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构建技巧总结相关内容,由优网导航(www.uonce.com)提供,欢迎关注收藏本站!Web 应用日益复杂,相关开发技术也百花齐放,这对前端构建工具提出了更高的要求。 Webpack 从众多构建工具中脱颖而出成为目前最流行的构…