使用 HTTP/2 时,缩小和连接 JS/CSS 文件以及使用图像精灵是否仍能提供性能优势?

2024-03-04

使用新的 HTTP/2 协议,向同一服务器重复 HTTP 请求所产生的开销已大大减少。

考虑到这一点,缩小和连接 JavaScript/CSS 文件以及将图像组合成精灵是否仍然具有任何显着的性能优势?或者当使用 HTTP/2 时这些做法不再有用?


它们仍然有用。HTTP/2 减少了其中一些做法的影响,但并没有消除它们的影响.

缩小仍然像以前一样有用。尽管 HTTP/2 引入了新的消息头压缩,但这与缩小(与消息体有关)无关。消息正文的压缩算法是相同的,因此缩小可以节省与以前一样多的带宽。

连接和精灵的影响将比以前小,但它们仍然会产生一些影响。使用 HTTP/1 下载多个文件而不是单个文件的最大问题实际上并不是 HTTP 端问题,per se: there is单独请求每个文件时会产生一些基于带宽的开销,但与完成一个文件后拆除 TCP/IP 会话、然后为下一个文件启动一个新文件并重复此操作所产生的基于时间的开销相比,它就相形见绌了对于您要下载的每个文件。

HTTP/2 最大的焦点是消除基于时间的开销:HTTP/1.1 试图通过管道来做到这一点,但它没有在浏览器中流行起来(Presto 是唯一完全正确的引擎,而 Presto 是死的)。 HTTP/2 是另一种尝试,它改进了 HTTP/1.1 的方法,同时也使这种事情成为非可选的,并且它会更加成功。它还消除了some通过压缩标头来减少发出多个请求时基于带宽的开销,但它不能完全消除该开销,并且在下载多个文件时,仍然必须发出这些请求(作为单个 TCP/IP 会话的一部分,因此开销较少,但不是零)。因此,虽然连接和分割的影响是按比例虽然较小,但仍然有一些影响,特别是当您使用很多文件时。

当涉及到串联和分割时,要考虑的另一件事是压缩。类似类型的串联文件往往比单个文件压缩得更好,因为压缩算法可以利用串联数据块之间的相似性。类似的原理也适用于精灵:将相似的图像放在同一文件的不同区域通常会产生较小的文件,因为图像的压缩可以利用不同区域中的相似性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HTTP/2 时,缩小和连接 JS/CSS 文件以及使用图像精灵是否仍能提供性能优势? 的相关文章

随机推荐

  • Android VOIP SipException:无法创建 SipSession

    我正在尝试使用 Android 3 1 上内置的 SIP 运行 VOIP 呼叫 我有物理平板电脑设备 galaxy Tab 10 1 为了测试目的 我创建了一个项目SipDemo 示例 http developer android com
  • NotYetImplemented 错误 ng2-charts

    从 utils js 收到消息 NotYetImplemented 的错误 我在使用nodejs服务器时收到错误 这个错误到底意味着什么 当我使用 ngserve 时 没有这样的错误 我正在使用 ng2 charts 模块中的折线图 完整的
  • 如何检索从 SQL Server 到 VB.NET 受影响的行数?

    基本上 我通过运行时检索程序中的所有数据 我想知道如何检索更新后受影响的行数 以便我可以通过 VB NET 提示用户相关信息 我实际上正在做的是 更新后 如果没有其他行更新 则用户无法再单击按钮 通过使用执行非查询 http msdn mi
  • 子项在父视图之外不可点击

    我创建了一个带有标记的地图视图 看下面这张图 Grandparent是一个填充视图 Parent是我的MarkerView Child是一个可点击的标记 父级有clipChildren false 因此子级是可见的 我的问题是孩子们是可点击
  • 如何在 ASP.NET MVC 区域中的 Web 窗体中使用母版页

    我已将 MVC 区域添加到现有的 Web 窗体项目中 我想在 MVC 项目的所有视图中使用母版页 我不明白我应该如何引用 MVC 区域内的 WebForms 的 MasterPage 我读过这两篇文章 http www hanselman
  • Mercurial 变基场景

    我读过变基项目 http mercurial selenic com wiki RebaseProject页面并尝试了一个不平凡的例子 不是对一个完整的分支进行变基 和这个案例很相似重新建立 D 基础 我场景 B 的情况 这是 rebase
  • Android:如何在onStop之后返回具有“noHistory”属性的Activity?

    我正在寻找一种从历史堆栈中删除某个活动的方法 并找到了解决方案这里 瓦卡斯的回答 https stackoverflow com questions 1898886 removing an activity from the history
  • 续集上的belongsToMany会自动创建新的连接表吗?

    我对这个续集很陌生 我尝试使用belongsToMany通过UserPermissions在用户和权限之间关联模型 这是我的代码 用户 js const bcrypt require bcrypt const config require
  • 如何使用 JavaScript 正则表达式从推文中提取 URL?

    假设我将推文作为字符串存储在 JS 变量中 如何使用 JavaScript 正则表达式从推文中提取 URL 这应该比从字符串中提取 URL 容易得多 因为 我假设任何以 http 或 www 开头并以空格 或推文结尾 结尾的内容都是 URL
  • ios - UIImageView 上的 SizeToFit 不起作用

    我有一个 UIImageView 它从 ios 文件系统上的文档目录加载图像 问题是当我打电话时 imageView sizeToFit 这是行不通的 我认为这是因为图像此时尚未完全加载 因此在获得图像宽度和高度之前调用了 sizeToFi
  • python非阻塞非messing-my-tty按键检测

    我有一个循环可以完成一些工作并将大量信息打印到标准输出 一遍又一遍 这是一个循环 我想做的是检测用户何时 是否按下某个键 可以是箭头 回车键或字母 并在发生这种情况时执行一些工作 这应该是一个非常简单的子任务 但我花了四个小时尝试不同的方法
  • django 更新时的模型验证

    我创建了一个名为 Term 的模型及其验证器 如下所示 from django db import models from django contrib auth models import User from django core ex
  • Rails 3 替换验证

    我是 Rails 新手 但正在阅读有关验证控制器中的参数的文档 它们似乎引用了 verify 方法 但在 Rails 3 中 它显示 verify 已被弃用 这样做的新方法是什么 我收到的错误是 验证已从 Rails 中删除 现在可以作为插
  • 在 Eclipse-Photran 中为 Windows 上的 fortran 编译器配置 LAPACK

    Update 感谢弗拉基米尔对图书馆的有用见解 我采取了另一种方法 首先在 ubuntu 中开发 这比使用 Eclipse Cygwin 容易得多 现在我尝试移植到 Windows 这相当不错 但是我对此也有一些疑问 发布在这里 将 for
  • Control.MonadPlus.Free,无需不必要的分发

    我正在尝试使用免费的 monad 构建 EDSL 用于构建像 Prolog 这样的 AND OR 决策树 其中 gt gt 映射到 AND 并且mplus映射到 OR 我希望能够描述类似的东西A AND B OR C AND D OR E
  • 子窗口关闭时如何运行父窗口的功能?

    我正在调用 javascript window open 函数来在弹出窗口中加载另一个网址 用户完成操作后 会将他们带到最后一页 其中有一个链接 其中显示调用 window close 函数的关闭窗口 现在 当该页面关闭时 我需要更新打开窗
  • 我可以从 Firebase 远程配置的默认值获取 JSONObject

    我需要取JSONObject从远程的默认值config in Firebase By FirebaseRemoteConfig getString 它被转换为字符串 但不是在JSONObject 说 org json JSONExcepti
  • 无法使用 tsc 节点模块编译打字稿

    我正在尝试使用 tsc 节点包模块将打字稿编译为 JavaScript 首先 我使用安装了该模块npm install g typescript 在我的本地目录中 我创建了一个名为classes js 的文件 其中包含有效的打字稿代码 跑步
  • Neo4j 服务器与嵌入式模式

    我想确切地知道 neo4j 服务器和嵌入式模式是什么意思 即使我浏览了该帖子Neo4j 服务器与嵌入式 https stackoverflow com questions 8224523 neo4j server vs embedded 但
  • 使用 HTTP/2 时,缩小和连接 JS/CSS 文件以及使用图像精灵是否仍能提供性能优势?

    使用新的 HTTP 2 协议 向同一服务器重复 HTTP 请求所产生的开销已大大减少 考虑到这一点 缩小和连接 JavaScript CSS 文件以及将图像组合成精灵是否仍然具有任何显着的性能优势 或者当使用 HTTP 2 时这些做法不再有