HTTP 解析

来源:互联网 发布:西贝柳斯打谱软件 mac 编辑:程序博客网 时间:2024/06/16 20:44

HTTP解析

HTTP是B/S架构的核心,发起一个HTTP请求实际上就是建立一个socket通信过程。
关于HTTP,主要要熟悉HTTP Header, HTTP Header控制着成千上万用户的数据传输。

常见的HTTP请求头和响应头

常见的HTTP请求头

请求头 说明 Accept-Charset 用于制定客户端接受的字符集 Accept-Encoding 用于指定可接受的内容编码 Accept-Language 用于指定一种自然语言,如Accept-language:zh-cn Host 用于指定被请求的资源的Internet主机和端口号,如Host:www.google.cn User-Agent 客户端将自己的操作系统、浏览器和其他属性告诉服务器 Connection 当前连接是否保持,如Connection:Kepp-Alive

常见的HTTP响应头

响应头 说明 Server 使用的服务器的名称,如Server: Apache/1.3.6(Unix) Content-Type 用来说明实体正文的媒体类型(编码),如Content-Type:text/html;charset=UTF-8 Content-Encoding 与请求报头Accept-Encoding对应,告诉浏览器服务端采用的是什么压缩编码 Content-Language 描述资源所用的自然语言,与Accept-Language对应 Content-Length 正文的长度,用以字节方式存储的十进制数字来表示 Keep-Alive 保持连接的时长,如Keep-Alive;timeout=5,max=120

常见的HTTP状态码

状态码 说明 200 服务器返回正常,客户端接受成功 302 临时跳转,跳转的地址通过Location指定,服务器的重定向 400 客户端请求有语法错误,不能被服务器识别 404 资源不存在 500 服务器内部出现错误

查看HTTP信息的工具

使用浏览器可以很方便的看到具体的HTTP请求信息,不同的浏览器使用不太一样,我这里用的是谷歌浏览器
按F12可以调出开发者模式,在这里可以很方便的对前端进行调试以及对HTTP进行分析
下面两张图分别是请求CSDN首页的时候,获取到的网络资源和HTTP请求信息
网络资源获取情况
HTTP请求信息


浏览器的缓存机制

首先清楚浏览器的缓存,然后按F12,再打开github,可以看到浏览器耗时4.90s
这里写图片描述
之后,我们重新访问一次(按一次F5),可以看到浏览器耗时变成1.36s
这里写图片描述

这就是因为浏览器在第一次执行时,将一些数据缓存下来,第二次执行时不需要重新请求服务器去获取这些已经缓存的资源。这样就大大减少了网络传输耗时。当然这也是为什么我们在开发web项目的时候,刷新后页面并没有更新的原因。
我们通常对于修改了html或者jsp后,页面没有更新的解决办法是,清除浏览器缓存,这当然是一种有效的方法。我们还可以使用按Ctrl + F5的方法来进行刷新。

我们不妨看一下之前第一次访问github时的HTTP请求头
第一次访问github

我们此时按住Ctrl + F5,再次请求。
这里写图片描述

可以看到按住后请求的时候,与之前不一样的地方在于,增加了两个请求项
Pragma:no-cache
Cache-Control:no-cache

  • Cache-Control/Pragma
    这个HTTP Head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令
    Cache-Control请求字段被各个浏览器支持的较好,而且它的优先级比极高
    Pragma字段的作用和Cache-Control有点类似,它也是在HTTP头中包含一个特殊的指令,使相关的服务器遵守该指令。
原创粉丝点击