一、浏览器缓存
在查看页面时发现异常,一般会刷新缓存,快速的做法是Ctrl+F5,重新发起请求。
问了确保Ctrl+F5重新发起的请求得到的结果既不是浏览器缓存也不是服务器缓存,Ctrl+F5时在HTTP头会添加一些参数,如下:
Cache-Control:no-cache:针对浏览器,内容不被缓存
Pragma:no-cache:针对服务器,内容不被缓存
二、DNS
域名解析(DNS),简单来说就是把类似www.baidu.com这样的域名解析为实际的IP地址,例如:39.104.122.336
但这个过程并不简单,粗略可理解为:
1,浏览器检查缓存中有无这个域名对应的解析,有则解析结束。这个缓存受缓存大小和有效时间(TTL)制约
2,若没有,查找操作系统缓存中是否有对应域名解析,有则解析结束。
3,若没有,访问DNS服务器,一般就是LDNS(Local DNS),即你所使用的网络的供应商,例如电信,联通。而LDNS上保存的也是缓存,只是性能较好,能解决80%的解析。
4,若LDNS还是没有,则到终极的Root Server域名解析服务器
5,而Root Server返回不是解析结果,而是给本地域名服务器返回一个主域名服务器地址,例如.com,.cn,.org等
6,本地服务器得到主域名服务器地址后去访问主域名服务器(gTLD Server)
7,gTLD Server返回需要解析的域名对应的 Name Server域名服务器地址。Name Server指你域名所购的服务商,例如从阿里购买的域名,那这个域名服务器由阿里提供。
8,Name Server从IP对照表里获取解析结果,连同TTL值一起返回
清除域名缓存方法
从请求过程可以得出,可以从清除LDNS和本地缓存,两个方向着手。
LDNS,由控制TTL来控有效时间
本地缓存,window下使用ipconfig/flushdns;Linux下使用/etc/init.d/nscd restart来清除缓存
三、CDN
中文意思是内容分布网络,很抽象的概念,可以更抽象的概括为:
CDN=镜像(Mirror)+缓存(Cache)+整体负载均衡(GSLB)
简单理解就是“就近打水”,CDN以缓存网站中静态数据为主,如CSS,JS,图片,静态页面,有了CDN就可以把这些东西放在和访问者距离最近的服务器上,来提高访问速度。
过程粗略理解为:
访问一个静态文件,例如一个CSS文件,域名是cdn.css.com,首先由LDNS来发起请求,解析后到这个域名的注册服务器(Name Server)去解析,这时可以把域名CNAME到另外一个域名,例如cdn.cssgcc.com,这个域名最终被指向CDN全局中的DNS负载均衡服务器,再由这个GTM来返回给距离这个访问者最近的CDN节点。