• 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、安全机制
  • 相关阅读:
    Android复习(一)基础知识
    iOS Xcode真机调试包下载地址
    使用AndroidStudio开发cocos2d-x,以及可能会出现的问题
    浅析为什么用高阶组件代替 Mixins
    github readme 添加图片预览
    vue打包多页报错webpackJsonp is not defined
    MegaPixImage插件代码(new MegaPixImage)
    【react学习二】create-react-app 接入antd 并按需加载组件
    canvas 计算文字宽度(常用于文字换行)
    【react学习一】首先先create-react-app 配置less、sass
  • 原文地址:https://www.cnblogs.com/zppsakura/p/14118658.html
Copyright © 2020-2023  润新知