上次我们谈到了 HTTP 报文里的 body,知道了 HTTP 可以传输很多种类的数据,不仅是文本,也能传输图片、音频和视频。

早期互联网上传输的基本上都是只有几 K 大小的文本和小图片,现在的情况则大有不同。网页里包含的信息实在是太多了,随随便便一个主页 HTML 就有可能上百 K,高质量的图片都以 M 论,更不要说那些电影、电视剧了,几 G、几十 G 都有可能。

相比之下,100M 的光纤固网或者 4G 移动网络在这些大文件的压力下都变成了“小水管”,无论是上传还是下载,都会把网络传输链路挤的“满满当当”。

所以,如何在有限的带宽下高效快捷地传输这些大文件就成了一个重要的课题。这就好比是已经打开了冰箱门(建立连接),该怎么把大象(文件)塞进去再关上门(完成传输)呢?

今天我们就一起看看 HTTP 协议里有哪些手段能解决这个问题。

数据压缩

还记得上一讲中说到的“数据类型与编码”吗?如果你还有印象的话,肯定能够想到一个最基本的解决方案,那就是“数据压缩”,把大象变成小猪佩奇,再放进冰箱。

通常浏览器在发送请求时都会带着“Accept-Encoding”头字段,里面是浏览器支持的压缩格式列表,例如 gzip、deflate、br 等,这样服务器就可以从中选择一种压缩算法,放进“Content-Encoding”响应头里,再把原数据压缩后发给浏览器。

如果压缩率能有 50%,也就是说 100K 的数据能够压缩成 50K 的大小,那么就相当于在带宽不变的情况下网速提升了一倍,加速的

16 | 把大象装进冰箱:HTTP传输大文件的方法相关推荐

  1. SharePoint 2013中的视频体验增强(1)——把大象装进冰箱

    从2010这个版本,SharePoint正式开始了对视频的内置支持,使用silverligth作为其播放器.不过经过某几个项目体验之后,发现2010对视频的内置支持依然是有限的,有些功能需要自己开发来 ...

  2. 大象装进冰箱要几步?Python 来解答

    我想你一定知道这个小品:问把大象装冰箱需要几步? 1.打开冰箱门 2.把大象装进冰箱 3.关上冰箱门 对应的python代码: def open_ref(ref): print("打开冰箱& ...

  3. 浅谈面向对象的编程思想:如何优雅地把大象装进冰箱?

      许多人刚学编程时,想必都听到过这样的话:"*语言是面向对象的,而***语言是面向过程的".那时的新人还懵懵懂懂,就被大牛或者书上的大牛骗去学了一种听起来很厉害的语言,然而学了半 ...

  4. 我是如何把大象装进冰箱里的……

    前几天在知乎看到了这样一个问题:CORNERSTONE等项目管理工具体验如何? 本来利益相关太高不准备答,但是我发现题主问的是CORNERSTONE等项目管理工具体验如何,我个人理解,题主是想问:CO ...

  5. 四种企业传输大文件的方法

    如今,发送数GB大小的文件变得越来越普遍.例如,在我们的日常办公中,接收超过100MB的日志数据的zip文件是正常的.虽然看起来这只是一个高度专业化的案例,但在科技行业中却很常见. 在影视行业中,单个 ...

  6. Java大象进冰箱线程_把大象装进冰箱:HTTP传输大文件的方法

    上次我们谈到了HTTP报文里的div,知道了HTTP可以传输很多种类的数据,不仅是文本,也能传输图片,音频和视频. 早期互联网上传输的基本上都是只有几k大小的文本和小图片,现在的情况则大有不同.网页里 ...

  7. 层次化设计-把大象装进冰箱

    一.概述 在绝大多数的面向对象软件系统设计中,逻辑结构的深度都是非常高的. 现在流行扁平化思维,在各大框架源码中复杂的类关系.执行逻辑关系让我等萌新头皮发麻,我不禁想这些源码为什么不采用扁平化思想进行 ...

  8. 把大象装进冰箱要几步?不清楚,但是学会SV验证只剩3步了!

    本文转自:http://www.eetop.cn/blog/html/28/1561828-5940108.html 在上一期的Lab3中,我们创建了TB所需的组件,如Monitor和Checker. ...

  9. 看我们如何“把大象放进冰箱里”

    一.数学家的办法 转自MITBBS 把大象放到冰箱里的分析学方法 1)先把大象微分,然后把它放到冰箱里,再在冰箱里把它积分. 2)重新定义冰箱或者大象的测度(如Radon测度). 3)用Banach- ...

  10. C、C++和C#的关系,以“把大象放进冰箱里”举例

    最近得用unity做虚拟仿真相关的东西,当然,它的知名还是在游戏界,像王者荣耀就是使用 unity 开发的. 使用unity就要学习C#语言,我一直以为C#是C++的升级版本,因为C++是C的改进版, ...

最新文章

  1. Python实训day03pm【列表生成式、非文本文件的读写与复制、文本文件读写练习】
  2. 读书笔记_unity4.x第十二章_渲染管线
  3. 【网络编程】之十一、重叠IO Overlapped IO 完成例程
  4. 15 CO配置-控制-内部订单-维护分配结构
  5. 铅笔道区块链实验班_你们抢着要的道地药材,必须用上区块链了
  6. 年轻人如何抵抗居高不下的房价?
  7. 移动Web实战篇-使用CSS Sprites减少你的页面http请求
  8. 祝贺在龙芯平台上编译jogamp(gluegen/jogl)2.3.2通过,并运行成功
  9. ROS学习笔记—— tf 工具包介绍
  10. 从零开始学Android!渣本毕业两年经验,附超全教程文档
  11. 关于WORD VBA学习使用心得
  12. access查询top10产品_access数据库 top
  13. 百度文库免费下载(附:分享一些有趣的网站,最后一个可以免飞下载百度文库)
  14. 浅谈如何学习网络编程
  15. html嵌入word文档,网页中嵌入word文档和导出数据到word文档
  16. 结对项目—地铁出行路线规划
  17. PPT——地图快速获取(各地区域)
  18. 强劲大小核结构 三星将推八核处理器
  19. C语言小项目实践——日历程序
  20. 基于ASP.NET小微企业人力资源管理系统

热门文章

  1. SyntaxError: Non-UTF-8 code starting with ‘\xd5‘ in file
  2. 信息储存服务器有没有辐射,服务器存储主机存在辐射吗
  3. 为了让你在“口袋奇兵”聊遍全球,java面试代码题
  4. Android CHM文件阅读器
  5. MATLAB subplot子图分块绘制的方法
  6. “秃“如其来的植发经济是一门好生意吗?
  7. python——获取矩形四个角点的坐标
  8. 基于matlab算法的可靠度分析,参考基于matlab算法的可靠度分析
  9. WT2003H语音芯片(模组)是如何让雾化加湿助眠器方案 设计简单化、标准化?
  10. 爆:中国互联网的那些黑色产业链