随着Web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变到更加方便快捷的B/S架构。这样的转化简化了人们上网的方式,也加速了互联网行业的发展。css
B/S架构的好处:html
1.客户端使用统一的浏览器(Browser)。由于浏览器是统一的,因此用户的使用难度大大的下降了,并且对于开发者来讲也能够下降学习成本。web
2.服务端(Server)基于统一的HTTP协议。HTTP是一种无状态的链接,请求完成后断开。全世界的互联网服务都基于统一打招呼的方式,这种方式更加便捷,效率更高。数据库
当用户输入www.taobao.com的时候这个URL的时候,将会发生不少的操做。首先它会请求DNS把这个域名解析成对应的IP地址,而后根据z合格IP地址在互联网上找到对应的服务器,向这个服务器发一个get请求,由这个服务器决定返回默认的数据资源给访问的用户。服务器也能够是有不少台,到底指定哪台服务器来处理请求,这须要一个负载均衡设备来平均分配全部用户的请求;还有请求的数据是存储在分布式缓存里仍是一个静态文件中,或是在数据库里;当数据返回浏览器时,浏览器解析数据发现还有一些静态资源文件(如css、js或者图片)时又会发起另外的HTTP请求,而这些请求极可能会在CDN上,那么CDN服务器又会处理这个用户的请求,用户发起一个请求大概有这么多的过程,若是有哪一个节点出现了问题,直接会影响此次请求是否成功。以下图所示:浏览器
下面就这张图来分析一下一个完整的Web的请求过程:缓存
1.用户从打开浏览器开始,输入www.taobao.com,首先要将www.taobao.com这个URL请求DNS服务器解析成对应的IP地址,而后再根据这个IP地址去网络中找到这台主机服务器。服务器
2.请求服务器,通常大型的网站会有负载均衡设备来提升网站的总体的吞吐能力,这个节点会将用户的请求平均分发给下面的web应用服务器,如TomCat,Jboos等等,这里也就是咱们所说的一段业务逻辑,它决定着要返回给客户什么样的数据以及如何渲染,或者又是须要拿什么样的数据,从哪里拿,这个都是业务人员须要编写的代码,就不一一赘述了。网络
3.请求完成返回给客户端相应的数据,若是发现返回的数据里面有不少静态资源文件,则可能又会发起另外的请求去请求CDN或者存放静态资源的服务器。架构
无论如何,仍是有一些不变的规则须要遵照:负载均衡
1.互联网上的全部资源都要用一个URL来表示,且必定是惟一的。
2.必须基于HTTP协议与服务器端交互.
3.数据展现必须在浏览器中进行
如何发起一个HTTP请求?
当用户在浏览器内输入www.taobao.com这个URL按下确认以后,这其实就是发起了一个HTTP请求,还有一种是利用一个开源包HttpClient,个人另一篇博客里面有,进行一个HTTP请求的发送。博客地址为:
http://www.cnblogs.com/yujiwei/p/7238613.html
HTTP协议的组成?
我认为HTTP协议最主要的三大模块是:请求头、响应头、HTTP状态码,咱们工做中接触到最多的也就是这三个。
其实上面三张图,已经很清楚的说明了这三个HTTP协议的组件的一些参数,而且这些也是咱们平时工做常常接触的。下面我尝试打开浏览器,输入www.sunyard.com这个URL,示例用的是火狐浏览器。
咱们能够按下F12看到一些请求的信息和返回的信息
上面显示的请求状态是200,说明请求成功了。
打开网络选项点击请求头信息:
以及响应头信息:
基本上经过浏览器均可以查询到这些基本的信息,如今的浏览器都会具备F12的开发者工具,相对来讲仍是比较方便的。
浏览器缓存机制:
你们在开发的过程当中是否有请求发生了异常的状况,这个时候不论是F12仍是各类检查前台和后台的代码发现居然没有问题,那么这个时候就要考虑浏览器是否存在缓存信息致使了这个状况的发生,浏览器缓存是一个比较复杂可是又比较重要的机制。这个时候我通常有两种解决方案:
第一种:清除掉浏览器的缓存,通常浏览器都会提供浏览器缓存的清空按钮。
第二种:Ctrl+F5直接请求,这个操做能够直接避过浏览器的缓存直接请求服务器,可是有的服务器部署了Varnish缓存服务,因此有即便避开了浏览器的缓存,可是却仍是有可能访问到缓存中的数据。
当咱们使用Ctrl+F5组合键刷新一个页面时,在HTTP的请求头中会增长一些请求头,告诉服务器端咱们须要的是最新的数据而不是缓存的数据。
效果能够如图所示,在请求头中增长了两个参数,这就表明着绕过了缓存的服务,直接请求服务器上最新的资源。
1.Cache-Control/Pragma
这个HTTP head字段用于指定全部缓存机制在整个请求/响应链中必须服从的指令。这个字段有一些可选值,以下图所示:
2.Expires
Expires一般的使用格式是Expires:Sat,25 Feb 2017 12:22:17 GMT,超过这个日期,那么就缓存就失效,直接请求服务器。
3.Last-Modified/Etag
这个字段表示一个服务器上的资源最后的修改时间。
以上就是一些Web的HTTP请求的一些基本的知识,请你们参考。