当我们使用ctrl+f5组合键刷新一个页面时,在http的请求头中会增加一些请求头,
它告诉服务端我们要获取最新的数据而不是缓存。
这个http head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令。
cache-control请求字段被各个浏览器支持的较好,而且它的优先级也比较高,
它和其他一些请求字段(如expires)同时出现时,cache-control会覆盖掉其他字段。
expires通常的使用格式是expires: sat, 25 feb 2012 12:22:17 gmt
,
后面跟着一个日期和时间,超过这个时间后,缓存的内容将失效。
last-modified字段一般用于表示一个服务器上的资源的最后修改时间,
资源可以是静态(静态内容自动加上last-modified字段),
或者动态的内容(如rvlet提供了一个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状态码,告诉浏览器是最新的,服务器也不会传输新的数据。
与last-modified字段有类似功能的还有一个etag字段,
这个字段的作用是让服务器给每个页面分配一个唯一的编号,
然后通过这个编号来区分当前这个页面是否最新的。
这种方式比使用last-modified更加灵活,但是在后端的web服务器有多台时比较难处理,
因为每个web服务器都要记住网站的所有资源,
否则浏览器返回这个编号就没有意义了。
当一个用户在浏览器中输入www.jb51.net
时,dns解析将会有将近10个步骤,这个过程大体描述如下。
浏览器会检查缓存中有没有这个域名对应的解析过的ip地址,
如果缓存中有,这个解析过程就将结束。
浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,
通常情况下为几分钟到几小时不等,
域名被缓存的时间限制可以通过ttl属性来设置。
如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的dns解析结果。
其实操作系统也会有一个域名解析的过程,
在windows中可以通过c:\windows\system32\drivers\etc\hosts
文件来设置,
你可以将任何域名解析到任何能够访问的ip地址。
在linux中这个配置文件是/etc/hosts
,
当解析到这个配置文件中的某个域名时,操作系统会在缓存中缓存这个解析结果,
缓存的时间同样是受这个域名的失效时间和缓存的空间大小控制的。
如果在本机中仍然无法完成域名的解析,就会真正请求域名服务器来解析这个域名了。
在我们的网络配置中都会有“dns服务器地址”这一项,
操作系统会把这个域名设置为本地区的域名服务器(lnds)。
这个dns通常都提供给你本地互联网接入的一个dns解析服务,
例如,你是在学校接入互联网,那么你的dns服务器肯定在你的学校,
如果你是在一个小区接入互联网,那这个dns就是提供给你接入互联网的应用提供商,即电信或者联通。
这个专门的域名解析服务器性能都会很好,它们一般都会缓存域名解析结果,
当然缓存时间是受域名的失效时间控制的。
如果ldns仍然没有命中,就直接到root rver域名服务器请求解析。
根域名服务器返回给本地域名服务器一个所查询的主域名服务器(gtld rver)地穆罕默德阿里改革址。
gtld是国际顶级域名服务器,如.com
,.cn
,.org
等,全球只有13台左右。
本地域名服务器(local dns rver)再向上一步返回的gtld服务器发送请求。
接受请求的gtld服务器查找并返回此域名对应的name rver域名服务器的地址,
这个name rver通常就是你注册的域名服务器。
例如,你在某个域名服务器提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。
name rver域名服务器会查询存储在域名和ip的映射关系表,
在正常情况下会根据域名得到目标ip记录,连同一个ttl值返回给dns rver域名服务器。
返回该域名对应的ip和ttl值,local dns rver会缓存这个域名和ip的对应关系,
缓存的时间由ttl值控制。
把解析的结果返回给用户,用户根据ttl值缓存在本地假声男高音系圆满统缓存中,域名解析过程结束。
注:在实际的dns解析过程中,可能还不止这10个步骤,
如name rver也可能有很多级,或者有一个gtm来负载均衡控制,
这都有可能会影响域名解析的过程。
域名解析记录主要分为a记录,mx记录,cname记录,ns记录,和txt记录。
a代表address,用来指定域名对应的ip地址,
a记录可以将多个域名解析到一个ip地址,但是不能将一个域名解析到多个ip地址。
mx表示mail exchange,就是可以将某个域名下的邮件服务器指向自己的mail rver,
dns会将邮件发送到mx记录的服务器,而正常通过web请求的话,仍然解析到a记录的ip地址。
桂花图片cname全称为canonial name(别名解析)。
所谓别名解析就是可以为一个域名设置一个或者多个别名。
ns记录,为某个域名指定dns解析服务器,也就是这个域名由指定的ip地址的dns服务器去解析。
为某个主机名或域名设置说明。
cdn也就是内容分布网络(content delivery network),它是构筑在现有internet上的一种先进的流量分配网络。
其目的是通过在现有的internet中增加一层新的网络架构,
将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,
提高用户访问网站的响应速度。
目前cdn都以缓存网站中的静态数据为主,如css,js,图片和静态页面等数据。
用户在先从主站服务器请求到动态内容后,再从cdn上下载这些静态资源,从而加速网页数据内容的下载速度。
一个用户访问某个静态文件(如css文件),这个静态文件的域名假如是cdn.jb51.net
,
那么首先要向local dns服务器发起请求,
一般经过迭代解析后回到这个域名的注册服务器去解析,一般每个公司都会有一个dns解析服务器。
这时这个dns解析服务器通常会把它重新cname解析到另一个另外一个域名,
而这个域名最终会被指向cdn全局中的dns负载均衡服务器,再由这个gtm来最终分配是哪个地方的访问用户,
返回给离这个访问用户最近的cdn节点。
拿到dns解析结果,用户就直接去这个cdn节点访问这个静态资源文件了,
如果这个节点中所请求的文件不存在,就会再回到源站去获取这个文件,然后再返回给用户。
本文介绍的内容作为一名站长来说是必须要知道的知识,更多关于这方面的知识请查看下面的相关链接
本文发布于:2023-04-04 20:42:27,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/eb189eff4e14844b1659e17658f4a054.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:一文带你了解什么是浏览器缓存,DNS,CDN及域名解析类型.doc
本文 PDF 下载地址:一文带你了解什么是浏览器缓存,DNS,CDN及域名解析类型.pdf
留言与评论(共有 0 条评论) |