首页 > 其他分享 >HTTP/1.1 优化

HTTP/1.1 优化

时间:2024-07-30 11:42:47浏览次数:11  
标签:HTTP 1.1 请求 响应 服务器 优化 资源 客户端

避免发送 HTTP 请求
对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响应」的数据都缓存在本地,通过缓存技术减少请求次数。

客户端会把第一次请求以及响应的数据保存在本地磁盘上,其中将请求的 URL 作为 key,而响应作为 value,两者形成映射关系。之后再发起相同请求,就在本地磁盘查找 key 对应的 value,直接本地读取响应。

首先,服务器发送 HTTP 响应会估算过期时间并发送给客户端,客户端发现未超时就会直接使用本地;如果过期了,客户端重新发送请求,并在请求的 Etag 头部带上第一次请求时响应头部的摘要,服务器会比较服务器本地资源,如果是一样的,仅返回不含有包体的 304 Not Modified 响应来减少传输延时,如果不一样那就传输最新资源。

缓存的使用

减少 HTTP 请求次数
减少重定向请求次数。重定向请求就是服务器的资源从 url1 迁移到 url2,那么请求 url1 之后就会返回 302 响应码以及对应的 Location 头部。要知道的是服务器也有多级,一般客户端与代理服务器沟通,而代理服务器再去源服务器请求资源;那么重定向的工作交由代理服务器完成,就能减少 HTTP 请求次数了

把多个访问小文件的请求合并成一个大的请求,虽然传输的总资源还是一样,但是减少请求,也就意味着减少了重复发送的 HTTP 头部。同时为了防止 HTTP/1.1 的队头阻塞问题,一般浏览器会同时发起 5-6 个请求,每一个请求都是不同的 TCP 连接,那么如果合并了请求,也就会减少 TCP 连接的数量,因而省去了 TCP 握手和慢启动过程耗费的时间。合并请求的方式就是合并资源,以一个大资源的请求替换多个小资源的请求。但是这样的合并请求会带来新的问题,当大资源中的某一个小资源发生变化后,客户端必须重新下载整个完整的大资源文件,这显然带来了额外的网络消耗。

延迟发送请求。可以通过「按需获取」的方式,来减少第一时间的 HTTP 请求次数。

减少 HTTP 响应的数据大小
无损压缩,资源压缩后信息不被破坏,仍能还原到压缩前的原样,适合用在文本文件、程序可执行文件、程序源代码。

无损压缩,就可以在客户端请求的时候通过头部中的 Accept-Encoding 字段告诉服务器:

Accept-Encoding: gzip, deflate, br
服务器收到后压缩,最后通过响应头部的Content-Encoding 字段告诉客户端该资源使用的压缩算法。

Content-Encoding: gzip
有损压缩,解压的数据就会与原始数据有不同,但非常接近。有损压缩主要将次要的数据舍弃,牺牲一些质量来减少数据量、提高压缩比,这种方法经常用于压缩多媒体数据,比如音频、视频、图片。

可以通过 HTTP 请求头部中的 Accept 字段里的「 q 质量因子」,告诉服务器期望的资源质量。

Accept: audio/*; q=0.2, audio/basic
目前压缩比较高的是 Google 推出的 WebP 格式。常用于压缩图片。如果是音视频,会通过在一个静态的关键帧,使用增量数据来表达后续的帧来压缩。对于视频常见的编码格式有 H264、H265 等,音频常见的编码格式有 AAC、AC3。

标签:HTTP,1.1,请求,响应,服务器,优化,资源,客户端
From: https://www.cnblogs.com/NETYZreall/p/18332021

相关文章

  • HTTP 和 RPC
    TCP是传输层的协议,而基于TCP造出来的HTTP和各类RPC协议,它们都只是定义了不同消息格式的应用层协议而已。RPC(RemoteProcedureCall),又叫做远程过程调用。它本身并不是一个具体的协议,而是一种调用方式。虽然大部分RPC协议底层使用TCP,但实际上它们不一定非得使用TCP,改用......
  • [HTTP] HTTP 协议 Response Header 之 Content-Length、Transfer-Encoding与Content-E
    0引言在近期项目一场景中,一WebAPI(响应内容:7MB-40MB、数据项:5W-20W条)的网络传输耗时较大,短则5s,长则高达25s,前端渲染又需要耗时9s-60s。在这个场景中,前端的问题暂且不表。那么针对后端的问题,个人认为还是有较大的优化空间:1)启用HTTP内容压缩策略【最重要】2)调整数据......
  • HTTP 与 HTTPS
    HTTPS在TCP三次握手后,还需进行SSL/TLS的握手过程,才可进入加密报文传输。HTTP默认端口号是80,HTTPS默认端口号是443。同时,HTTPS协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。HTTPS通过混合加密、摘要算法以及身份证书,来完成对HTTP传递明文的内容......
  • HTTP/1.1、HTTP/2、HTTP/3
    HTTP/1.1相比HTTP/1.0性能上的改进:使用长连接的方式改善了HTTP/1.0短连接造成的性能开销。支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。但HTTP/1.1还是有性能瓶颈:请求/响应头部(Header)未经压缩就发......
  • 前端实现【 批量任务调度管理器 】demo优化
    一、前提介绍我在前文实现过一个【批量任务调度管理器】的demo,能实现简单的任务批量并发分组,过滤等操作。但是还有很多优化空间,所以查找一些优化的库,主要想优化两个方面,上篇提到的:针对3,其实可以自己手写一个,也可以依靠如什么来实现。针对2,最难的是根据【当前系统负......
  • HTTP 特性
    HTTP常见到版本有HTTP/1.1,HTTP/2.0,HTTP/3.0,不同版本的HTTP特性是不一样的。这一章主要针对HTTP/1.1展开,最突出的优点是「简单、灵活和易于扩展、应用广泛和跨平台」。缺点分别是「无状态、明文传输」,同时还有最大的缺点「不安全」。对于无状态的问题,解决方案有很多种,其中......
  • HTTP 缓存
    避免发送HTTP请求的方法就是通过缓存技术,HTTP设计者早在之前就考虑到了这点,因此HTTP协议的头部有不少是针对缓存的字段。HTTP缓存有两种实现方式,分别是强制缓存和协商缓存。强制缓存只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏......
  • HTTP基本概念
    HTTP是超文本传输协议,也就是HyperTextTransferProtocol。HTTP协议是一个双向协议,是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。是超越了普通文本的文本,它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本。1xx类状态码属......
  • 回归预测|基于灰狼优化BP神经网络的多特征输入单输出的数据回归预测Matlab程序GWO-BP
    文章目录一.灰狼优化BP神经网络基本原理二.灰狼优化BP神经网络Matlab程序2.1实验结果2.2Matlab程序一.灰狼优化BP神经网络基本原理灰狼优化(GreyWolfOptimization,GWO)结合BP神经网络进行数据回归预测是一种结合了优化算法和神经网络的方法,适用于多......
  • 优化 GitHub 体验的浏览器插件「GitHub 热点速览」
    上周,GitHub有个“安全问题”——CFOR(CrossForkObjectReference)冲上了热搜,该问题的表现是:远程仓库的提交内容任何人可以访问,即使已被删除。只需要拿到commitID+源/Fork的项目地址,任何人都能访问之前提交到远程仓库的内容。下面有3个演示,可以复现该问题:演示一:Fork项目......