Web请求过程总结
1、CND架构图
图片来源:深入分析JavaWeb技术内幕(许令波著)
2、发起HTTP请求
发起一个HTTP请求就是浏览器建立socket通信的过程,HttpClient开源的通过程序实现的处理HTTP请求的工具包。
Linux中的curl命令可简单的发送HTTP请求;
3、HTTP解析
HTTP请求头、HTTP响应头、HTTP状态码;(具体用法可查文档)
4、工具
FireFox:HttpFox、Firebug;Chrome:自带;IE:HttpFox;
5、浏览器缓存机制
Ctrl+F5:不仅控制可前端不使用缓存,也控制了后端不用缓存数据;在HTTP请求头里面有:Pragma:no-cache、Cache-Control:no-cache;等字段。(具体用法可查文档)。
6、DNS解析
DNS解析涉及大约10个步骤,从缓存-本机hosts-本地DNS Server......;
查看DNS服务器;win:Ipconfig,linux:cat /etc/resolv.conf;
跟踪域名解析: Linux可用dig命令,win及linux可用nslookup。
清除域名缓存:ipconfig /flushdns、linux下:/etc/init.d/nscd restart。
Java中通过InetAddress类来解析域名,一定要使用单例模式。
几种域名解析方式:A记录、MX记录、CNAME记录、NS记录、TXT记录。
7、CDN工作机制
CDN主要缓存网站中的静态资源;
负载均衡:链路负载均衡、集群负载均衡、操作系统负载均衡。
链路负载均衡是由DNS解析完成,动态解析域名。
集群负载均衡:硬件-需要专门的硬件设备,软件-LVS:在网络层利用IP地址进行转发,HAProxy:根据用户的HTTP请求头来进行负载均衡。
8、参考文献
HTTP相关用法:https://developer.mozilla.org/en-US/docs/Web/HTTP