当前位置: 首页 > news >正文

SPDY是何方神圣

一、概述

1.2012 年 Google 提出了基于TCP的 SPDY 方案,优化了 HTTP1.x 的请求延迟,解决了HTTP1.X 的安全性。

2.SPDY是 HTTP1.x 的优化方案,旨在优化Web页面加载的时间。

3.SPDY 位于 HTTP 之下,TCP 和 SSL 之上,这样可以轻松兼容老版本的 HTTP协议(将HTTP1.x的内容封装成一种新的frame格式),同时可以使用已有的 SSL 功能。

4.SPDY的实现需要客户端和服务端同时支持。

SPDY的特性如下:


二、降低延迟

1.对于HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)在同一TCP连接上并发处理多个请求和响应。

2.多路复用通过多个请求 stream 共享一个 TCP 连接的方式,解决了HTTP request层面的 队头阻塞(HOL blocking ,即Head of Line blocking)的问题,但TCP层面的队头阻塞问题(由于丢失或延迟的数据包导致重传阻塞)并未解决,基于QUIC(Quick UDP Internet Connections)的HTTP/3基本可以解决队头阻塞问题。

3.SPDY使用多路复用进行TCP连接降低了延迟同时提高了带宽的利用率。


三、请求优先级(request prioritization)

1.多路复用带来的一个新的问题是:在连接共享的基础上有可能会导致关键请求被阻塞。SPDY 允许给每个 request 设置优先级,这样重要的请求就会优先得到响应。

2.例如浏览器加载首页,首页的html内容应该优先加载展示,之后才是各种静态资源文件、脚本文件等的加载,这样可以保证用户能第一时间看到网页内容。


四、header 压缩

1. HTTP1.x 的 header 很多时候都是重复的。选择合适的压缩算法压缩请求和响应的头部可以减小包的大小和数量。

2.SPDY采用DEFLATE算法进行头部压缩,HTTP/2采用HPACK算法进行头部压缩。


五、安全性

1.SPDY强制基于 HTTPS 的加密协议传输,大大提高了传输数据的安全性。

2.HTTP/2支持明文和密文HTTP传输。


六、服务端推送(server push)

1.SPDY允许服务器主动推送资源到客户端,而不需要客户端明确请求。这可以预加载一些资源,从而减少等待时间。

2.例如网页有一个 对sytle.css文件的请求,在客户端收到 sytle.css 数据的同时,服务端也会将 sytle.js 文件推送给客户端。这样当客户端再次尝试获取 sytle.js 文件时就可以直接从缓存中获取到,不用再发请求了。


七、流控制

1.SPDY提供了流控制机制,允许客户端控制数据的流动,防止服务端数据发送过快。
 


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • \r和\n不同系统的区别
  • SpringBoot注解大总结
  • 关于Spring Boot的自动配置
  • 《Unity3D网络游戏实战》通用服务器框架
  • Unity动画模块 之 3D模型导入基础设置 Materials
  • 从【人工智能】到【计算机视觉】,【深度学习】引领的未来科技创新与变革
  • 【PostgreSQL003】PostgreSQL数据表空间膨胀,磁盘爆满,应用宕机(经验总结,已更新)
  • vue项目实现postcss-pxtoremvue大屏适配
  • 【运维】在 CentOS 7 中修改 `http_proxy` 设置
  • 从0-1开发一个Vue3前端系统页面-9.博客页面布局
  • 8月18日笔记
  • 访客管理系统 - 在线版 识别身份证文字信息
  • Android -- 谷歌地图绘制
  • MySQL数据库专栏(四)数据库操作
  • 汽车IVI中控OS Linux driver开发实操(二十四):I2C设备驱动的编写
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • python学习笔记-类对象的信息
  • text-decoration与color属性
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue-cli在webpack的配置文件探究
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 安装python包到指定虚拟环境
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 关于使用markdown的方法(引自CSDN教程)
  • 普通函数和构造函数的区别
  • 前嗅ForeSpider教程:创建模板
  • 使用 QuickBI 搭建酷炫可视化分析
  • 智能合约开发环境搭建及Hello World合约
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 通过调用文摘列表API获取文摘
  • 整理一些计算机基础知识!
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​香农与信息论三大定律
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #14vue3生成表单并跳转到外部地址的方式
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #NOIP 2014# day.2 T2 寻找道路
  • #微信小程序:微信小程序常见的配置传旨
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (简单) HDU 2612 Find a way,BFS。
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (六)c52学习之旅-独立按键
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (十五)使用Nexus创建Maven私服
  • (五)关系数据库标准语言SQL
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .CSS-hover 的解释
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选