zoukankan      html  css  js  c++  java
  • HTTP/1:HTTP性能优化

    HTTP定义:

    HTTP是浏览器中最重要且使用最多的协议,是浏览器和服务器之间的通信语言,也是互联网的基石。

    HTTP/1.1的进化史:

    HTTP/0.9 => HTTP/1.0 => HTTP/1.1

    超文本传输协议 HTTP/0.9:

    需求很简单,用于在网络之间传递HTML超文本的内容,因此被称为超文本传输协议

    由于需求很简单,只是用来传输体积很小的HTML文件。所以HTTP/0.9的实现有三个特点

    • 只有一个请求行,如GET /index.html用来获取index.html,并没有HTTP请求行和请求体
    • 服务器也没有返回头信息。因为服务器并不需要告诉客户端太多信息,只需要返回数据就可以。
    • 返回的文件内容是以ASCII字符流来传输的,因为都是HTML格式的文件。

    被浏览器推动的 HTTP/1.0:

    随着万维网的高速发展,带来了很多新的需求,因此出现了HTTP/1.0。

    新的需求包括:
    • JavaScript
    • CSS
    • 图片
    • 音频、视频

    等不同类型的文件。

    HTTP/1.0实现的功能有:
    • 支持多种类型的文件下载(引入请求头和响应头)
    accept: text/html
    accept-encoding: gzip, deflate, br
    accept-Charset: ISO-8859-1,
    utf-8accept-language: zh-CN,zh
    
    • 引入了状态码
    • 为了减轻服务器的压力,提供了Cache机制,用来缓存已经下载过的数据
    • 在请求头中还加入了用户代理,以帮助服务器统计客户端的基础信息

    缝缝补补的 HTTP/1.1:

    HTTP的改进

    • 改进持久连接

    原因:HTTP/1.0每进行一次HTTP通信,都需经历TCP连接、传输HTTP数据和断开TCP连接三个阶段。

    问题:由于现在单个页面中的图片文件越来越多,如果在下载每个文件的时候都需要经历建立TCP连接,传输数据和断开连接,这将会增加大量无畏的开销

    改进:HTTP/1.1中增加了持久连接的方法,它的特点是在一个TCP连接上可以传输多个HTTP请求,只要浏览器或者服务器没有明确断开连接,那么该TCP连接会一直保持。

    • 不成熟的HTTP管线化

    HTTP/1.1 中试图通过管线化的技术来解决队头阻塞的问题

    • 提供虚拟主机的支持

    HTTP/1.1的请求头中增加了Host字段,用来表示当前的域名地址,这样服务器就可以根据不同的Host值做不同的处理

    • 对动态生成的内容提供了完美支持

    HTTP/1.1 通过引入Chunk transfer 机制来解决这个问题,服务器会将数据分割成若干个任意大小的数据块,每个数据块发送时会附上上个数据块的长度,最后使用一个零长度的块作为发送数据完成的标志。这样就提供了对动态内容的支持。

    • 客户端Cookie、安全机制
  • 相关阅读:
    SQL查询效率注意事项 2011.12.27
    MSSQL2005数据库快照(SNAPSHOT)初探
    恢复Intellij idea删除的文件
    因样式冲突引起的div消失问题
    C# 用面向对象的思想去编程
    C# Combobox联动
    C#端加载数据库,Combobox与Node控件绑定数据源demo示例
    数据库无法打开到SQL Server连接
    SQLServer2008 远程过程调用失败
    将.db文件导入SQLServer2008数据库
  • 原文地址:https://www.cnblogs.com/zppsakura/p/14118658.html
Copyright © 2011-2022 走看看