web前端JAVA笔记

【笔记】深入分析JavaWeb技术内幕-(一)Web请求过程与架

2017-10-26  本文已影响125人  程序员Anthony

最近在看许令波的《深入分析JavaWeb技术内幕》。整理了一下学习笔记。

BS网络架构概述

优点:
请求发生的完整过程:

HTTP最大的特点就是无状态的短连接的通信方式,通常情况下一次请求就完成了一次数据交互,通常也对应一次业务逻辑。然后这次通信就断开了。

采用这种方式是为了能够同时服务更多的用户,防止由于一个用户独占连接而造成阻塞的现象。

下面主要介绍用户在浏览器输入网址之后发生的整个完整过程。

以上就是大致的请求数据的过程。

三个原则

不管架构如何变化,有三个原则是始终不变的:

如何发起一个请求

发起请求实质上就是建立一个Socket连接,但是这是一个特殊的Socket连接。

端口号:80

所以完全可以自己模拟浏览器发起一个HTTP请求。专门有个处理HTTP请求的开源工具包,叫HttpClient。

在linux中通过curl+URL可以简单地发起一个HTTP请求。如:curl "www.google.com"

Http解析

HTTP请求的最重要的部分就是HTTP的头部。

HTTP请求头:

Accept-Charset 用于指定客户端接受的字符集
Accept-Encoding 可接受的内容编码
Accept-Language 自然语言 比如zh-cn
Host 指定被请求资源的Internet主机和端口号
User-Agent 客户端将它的操作系统、浏览器和其他属性告诉服务器
Connection 当前连接是否保持。

HTTP响应头:

Server 使用的服务器名称
Content-type 指明发送给接受者的实体正文的媒体类型,如Content_Type:text/html;charset = GBK
Content-Encoding: 告诉浏览器服务端采用的压缩编码
Content-Language: 描述了资源所用的自然语言
Content-Length : 指明实体正文的长度
Keep-Alive : 保持连接的时间

通过FireFox查看请求头和响应头 通过Fiddler查看安卓手机的http数据请求
常见的状态码:

404 请求资源不存在
200 客户端请求成功
400 客户端请求有语法错误
500 服务端发生不可预期的错误

浏览器的缓存设置

在浏览器端Ctrl+F5(command+shift+R)可以重新发起请求而不使用缓存数据。

DNS域名解析

清除缓存域名

Local DNS的缓存由TTL来控制,很难人工介入。但是本地机器的缓存可以用以下命令来清除:

Windows: ipconfig /flushdns
Linux: /etc/init.d/nscd restart

几种域名的解析方式

域名解析记录主要分为:A 记录、MX记录、CNAME 记录、NS记录和 TXT记录

CDN工作机制

CDN即内容分发网络(Content Dilivery Network)。通过现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需要的内容,提高用户网站的响应速度。

CDN 网络架构
负载均衡

对工作任务进行平衡、分摊到多个操作单元上去,共同完成任务。

三种架构:

链路负载均衡 硬件负载均衡

软件负载均衡:由多台代理服务器组成。成本非常低,网络延时较长。


CDN动态加速

一种优化技术,技术原理:在DNS的解析中通过动态的链路探测来寻找回源最好的一条路径,然后通过DNS的调度将所有请求调度到选定的这条路径上回源头,从而增加用户访问的效率。


CDN动态加速

原书链接

以上内容只是个人笔记纪录,更多完整内容请购买作者原书籍查看。《深入分析JavaWeb技术内幕》

上一篇 下一篇

猜你喜欢

热点阅读