Java Web 学习的相关内容
如何发起一个HTTP请求?
发起一个HTTP请求的过程实际上就是建立一个Socket通信的过程。
浏览器在建立Socket连接之前,必须根据地址栏里面输入的URL的域名DNS服务器,解析出对应的IP地址,例如aircjm.me
这个域名通过DnsPod的DNS服务器就会解析到对应的github或者是coding的服务器ip地址,的再根据这个IP地址和默认的端口号80与远程服务器建立Socket
连接,然后浏览器通过这个URL组装成一个get类型的HTTP请求,通过outputStream.write
发送到服务器,服务器等待inputStream.read
返回数据,最后断开这个链接。
状态码 | 说明 |
---|---|
200 | 访问成功 |
302 | 临时跳转,跳转的地址通过Location指定 |
400 | 客户端请求语法错误,不能被服务器识别 |
403 | 服务器收到请求,但是拒绝提供服务 |
404 | 请求的资源不存在 |
500 | 服务器发生不可预期的错误 |
缓存机制的几个属性:
Cache-Control/Pargma:no-cache
:所有内容不会被缓存,在请求头和响应头中设置。
Expires: Sat, 25 Feb 2012 10:22:11 GMT
后面跟着一个日期和时间,超过这个时间缓存会失效。
Last-Modiried/Etag
表示一个服务器上资源最后修改时间,通过这个最后修改时间可以判断当前请求的资源是否是最新的。
域名的几种解析方式:
类型 | 说明 |
---|---|
A记录 | Address,用来指定域名对应的IP地址 |
MX记录 | Mail Exchange,解析某个域名下的邮件服务器到自己的Mail Server |
CNAME记录 | Canonical Name(别名解析)为一个域名设置多个别名 |
NS记录 | 为某个域名指定DNS解析服务器 |
TXT记录 | 为某个主机名或者域名设置说明 |
CND工作机制:
通过镜像+缓存+整体负载均衡使得Content Delivery Network(内容分布网络)可以让用户更快的获得网络资源,提供用户访问网络的响应速度。
负载均衡:
就是对工作任务进行平衡、分摊到多个操作单元上执行,共同完成任务,对应用户来说,是一个服务器在处理任务,但是实际上是很多服务器组成一个集进行进行数据的处理。避免软件或者硬件的失效,导致任务或者请求的堵塞,和访问速度的一致性。
负载均衡的分类:
分类 | 说明 |
---|---|
硬件负载均衡 | 性能好,价钱贵,不能动态扩容 |
软件负载均衡 | 成本低,多次代理,增加网络延迟 |
链路负载均衡 | |
操作系统负载均衡 |
CDN动态加速:
通过动态的链路探测在CDN的DNS解析寻找回源最好的一条线路,将请求调度到选定的这条路径进行回源,从而加快网络访问速度。