HTTP——学习笔记(8)
HTTP中的一些协议内容会限制某些网站的功能使用
比如,Facebook这类的社交网站,需要实时地观察到海量用户公开发布的内容,而HTTP中的以下标准就会成为瓶颈:
一条连接上只可发送一个请求
请求只能从客户端开始。客户端不可以接受除响应以外的指令
请求/响应首部未经压缩就发送。首部信息越多延迟越大
发送冗长的首部。每次互相发送相同的首部造成的浪费较多
可任意选择数据压缩格式。非强制压缩发送。
针对以上问题有几种解决方法:
AJAX解决方法:
利用javascript和DOM达到局部web页面替换加载的异步通信手段,由于只更新一部分页面,响应中传输的数据量会因此而减少。
缺点:这种方法会导致大量请求发生,而且这个方法只是减少了数据的请求量,HTTP本身的问题并没有解决
Comet解决方法:
服务器端接收到请求,会将响应置于挂起状态,当服务器端有内容更新时,再返回该响应。
缺点:连接的持续时间变长,会消耗更多的资源,而且也没有解决HTTP本身存在的问题
SPDY协议解决办法:
在TCP/IP的应用层与运输层之间通过新加会话层的形式运作。考虑到安全性,SPDY规定通信中使用SSL。
SPDY以会话层的形式加入,控制对数据的流动,但还是采用HTTP建立通信连接。所以POST,GET方法还是有效的
加入SPDY后新增功能:
多路复用流:所有请求的处理都在一条TCP连接上完成,因此TCP的处理效率得到提高
赋予请求优先级:给请求分配优先等级,在发送请求时解决了因带宽低而导致响应变慢的问题
压缩HTTP首部:之前HTTP协议也可以压缩,但是在SPDY中强制压缩了
推送功能:支持服务器主动向客户端推送数据的功能,不必等待客户端的请求
服务器提示功能:服务器可以主动提示客户端请求所需资源
WebSocket协议解决办法:
web浏览器与web服务器之间全双工通信标准
特点:
支持服务器端和客户端双向通信,服务器端不用等待客户端的请求
一旦建立起WEBSOCKET连接就一直保持连接状态,并且websocket的首部信息很少,减少了通信量
在发送请求的首部字段中加入Upgrade字段,进行websocket的握手,之后双方不再使用HTTP的数据帧而使用websocket独立的数据帧进行通信
HTTP2.0中的解决办法:
HTTP2.0中加入了以下技术以提高通信时的速度和性能
SPDY
HTTP Speed + Mibility
Network-FriendlyHTTP Upgrade
后两者主要是针对移动端的通信时的速度和性能
HTTP——学习笔记(8)的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- LAMP 环境搭建备忘 -- Linux的安装(一)
LAMP指的是 Linux + Apatch + MySQL / MariaDB + PHP/Perl/Python 一套搭建网站服务器的开源软件组合.工作原理图如下: 下面开始环境搭建 1 Linu ...
- SpringMVC上传文件(图片)并保存到本地
SpringMVC上传文件(图片)并保存到本地 小记一波~ 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multi ...
- webpack实现模块化打包
webpack打包应用和实现 1)安装webpack $ npm install webpack webpack-cli --save-dev 2)添加配置文件 webpack.config.js 3 ...
- 常用的ES6方法
常用的ES6方法 ES6之后,新增了定义变量的两个关键字,分别是let和const. let和const都能够声明块级作用域,用法和var是类似的,let的特点是不会变量提升,而是被锁在当前块中. 实 ...
- ubuntu设置PATH
试了好多遍,多无效.. 最后在/etc/enviroment下设置才有效. 不过让有一些未解问题 我使用sudo su 进入到root用户权限,设置完成的. 重新使用sudo -s进入root用户权限 ...
- JavaCodeTra 36选7 彩票抽奖
想写个小代码试试自己的运气.然并卵.并不能猜中 import java.util.Random; import java.util.Scanner; /** * */ /** * @author Ha ...
- 字符串中连续出现最多的子串 & 字符串中最长反复子串
字符串中连续出现最多的子串 & 字符串中最长反复子串 字符串中连续出现最多的子串 & 字符串中最长反复子串,这两个问题都能够用后缀数组来表示,至于后缀数组能够參考编程珠玑P156:后缀 ...
- Objective-C基础笔记(3)OC的内存管理
Objective-C的内存基本管理 在OC中每一个变量都保存着引用计数器,当这个对象的引用计数器为0的时候该对象会被回收.当使用alloc.new或者copy创建一个对象的时候,对象的引用计数器被置 ...
- 一个ibatis映射文件的例子(包含增删改单查,多查)
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-/ ...
- php 设计模式之工厂模式
php 设计模式之工厂模式 简介: 在开发大型系统过程中,往往会出现这样一种情况: 我有一部分基础数据,是类classA是从数据库A读取出来的,其他很多的功能都是基于这个基础数据来操作的.现在呢,我想 ...