使用 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 文件以及使用图像精灵是否仍能提供性能优势? 的相关文章

  • 使用 Ctrl+v 或右键单击 -> 粘贴检测粘贴的文本

    使用 JavaScript 如何检测用户将哪些文本粘贴到文本区域 您可以使用粘贴事件来检测大多数浏览器中的粘贴 尤其是 Firefox 2 当您处理粘贴事件时 记录当前选择 然后设置一个简短的计时器 在粘贴完成后调用一个函数 然后 该函数可
  • IE 11 使用 HTML input=file 标签时锁定文件

    我在 IE11 中使用文件输入中的浏览来选择文件 我在资源管理器中使用shift delete删除了该文件 然后 当我刷新文件夹时 我删除的文件会再次出现在资源管理器中 无论如何 我可以通过客户端 JavaScript 释放文件句柄吗 我在
  • JS中的递归排序

    在一次采访中 我被要求编写一个程序 算法来使用递归对数字数组进行排序 虽然我含糊地回答了它 但我尝试并想出了以下代码 您可以使用以下JSFiddle https jsfiddle net RajeshDixit 2u9mLegv 1 链接来
  • 我在 firebase.auth.ApplicationVerifier 中遇到问题

    错误发生在signInWithPhoneNumber 的第二个参数中 我无法解决这个问题 我使用了三种方法来发送 otp 验证 otp 和最后用于验证码 methods sendOTP e e preventDefault if this
  • Moment.js 在 Firefox 中返回 NaN,但在 Chrome 中不返回 NaN

    我有以下代码行 moment 11 10 2013 09 03 AM diff moment minutes 在 Chrome 30 0 1599 101 中 以下行返回一个数字 它每分钟都会更改 因此确切的值不相关 在 Firefox 2
  • 转义双引号 JavaScript

    我试图在 iPhone 上查看时运行某种图像格式 在其他情况下运行一些 Flash 视频 var uagent navigator userAgent toLowerCase if uagent search iphone gt 1 doc
  • 保护客户端 API 的安全

    我正在为基于 JavaScript 的游戏构建服务器端 API 和客户端库 其中必须确保两个非常重要的功能的安全 用户每次游玩都必须扣款 我们必须确保提交的分数是玩家实际获得的分数 解决第一个问题看起来很简单 在每次游戏开始时 我们都会调用
  • 是否可以告诉 jsdoc 在与源代码分开的文件中查找该代码的文档?

    我希望内联注释尽可能短 因为我的经验是超过 3 或 4 行的注释往往会被掩盖 从而产生很多不必要的 阅读手册行 遗留系统要求我遵守与 jsdoc 兼容的格式来记录代码 如果要正确记录许多不言而喻的事情 则需要明确声明它们 实际上每个标签都可
  • Bootstrap 4 网格系统中的“col”上没有填充是否正常?

    我是第一次使用 Bootstrap v 4 我有一个footer就是使用新的flex col并且它在桌面上运行得很好 但是当我切换到移动设备时 它们彼此堆叠得如此紧密 没有垂直边距 填充 这是正常行为吗 另外 我希望内容居中或至少有一些偏移
  • 在 VueJs 中使用上下键自动完成搜索

    除了自动完成搜索之外 我还想添加功能以允许使用 VueJs 按下 向上键功能 我的模板如下所示 div h2 Todos h2 div class autocomplete div div
  • 如何在 jQuery 中使用其中心作为参考点来缩小 div?

    我有以下 div div style margin left 0px height 100px width 100px background color red div 我想使用 jQueryanimate 将 div 缩小到其大小的一半
  • 如果我想让我的网站跨平台兼容和屏幕阅读器兼容,我应该避免使用 javascript 、 jquery 、 flash 、 ajax 、 silverlight 吗?

    如果我想让我的网站跨平台兼容 PC iPHONE 其他手机 PDA 和 Accessible 兼容屏幕阅读器 我是否应该避免使用 JavaScript jQuery flash Ajax Silverlight 我应该只使用 xhtml c
  • CSS Hex 到速记十六进制转换

    将十六进制转换为速记十六进制的正确算法是什么 例如 996633很容易被转换为 963 但如果是这样怎么办 F362C3 我的第一个猜测是我只取每种颜色的第一个值并使用它 所以 F362C3变成 F6C 但我不知道如何从数学上证明这种方法的
  • vue中有自动更新这段代码的东西吗?

    我在导航器中找到了这个按钮 当用户登录时会显示该按钮 而当用户注销时该按钮就会消失 但现在我需要在按钮删除 出现之前刷新页面 这是我的代码 Button div div class div div
  • 针对较小屏幕的拆分表行

    我有一个固定宽度为 960px 有 5 列的表格 当我在移动设备中查看时 我想制作第 3 4 5 列 看起来就像在下一行 有什么方法可以让 CSS 打断一行 使其看起来像这样 但是 还保留原来的HTML代码吗 您可以使用 FlexBox f
  • 带有无序列表的 Flexbox

    我正在尝试学习 Flexbox 我真的很喜欢它 我正在尝试 玩动态宽度 当我这样做时div它有效 如果我尝试这样做li 它也不起作用 我的代码已上线codepen http codepen io jrock2004 pen pjvZJd d
  • 对于没有固定/相对/绝对位置的元素,是否有 z-index 替代方案?

    我需要在更高的位置显示一个元素 z level 问题是 该元素位于带有 a 的 div 内 display flex and justify content space around 正常的z index属性不起作用 我认为这是因为该元素没
  • 如何了解来自不同...“命名空间”的变量?

    如何从外部 javascript 文件中访问在另一个地方声明的某个变量 假设在一个 html 文件中我有以下内容 在 otherfile html 的部分中 我有 alert a 我如何确保收到一条提示消息 某事 我认为Google Ads
  • JS 中的展开/休息运算符如何工作? [复制]

    这个问题在这里已经有答案了 我正在努力完全理解扩展 休息运算符在 JS 中的工作原理 我已经阅读了 MDN 文档 但我仍然不完全清楚 我在下面提供了一个示例 我在其中使用了它并且它按预期工作 const users name Samir a
  • Javascript - 从 AWS s3 存储桶读取镶木地板数据(使用快速压缩)

    In nodeJS 我正在尝试读取镶木地板文件 压缩 snappy 但没有成功 I used https github com ironSource parquetjs https github com ironSource parquet

随机推荐

  • 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 时这些做法不再有