1

在优化网站时,我使用连接和拆分来将相关的、可重用的位组合在一起,但我经常想知道打包资产以交付给浏览器的数量是多少(有时自动化工具并不总是我构建过程的一部分,虽然我更喜欢它们)。

我很好奇在组合资产以交付给浏览器时是否在文件大小领域有一些明智的指导方针。假设没有压缩或缓存,只是从服务器到带有或不带有 AJAX 的浏览器的直接 http 传输。

  1. 推荐的最大最小文件大小是多少?
    我听说由于数据包的大小(对吗?抱歉,如果这不合适),1kb 和 2kb 的数据将以基本相同的速度传输 - 是否存在以 kb 为单位的一般阈值,其中额外的字节开始影响传输速率。

  2. 传输速度是否随文件大小线性变化,还是阶梯式变化?
    扩展第一个问题,每千字节是否以相当线性的方式提高传输速度?或者它是否以数据包大小的间隔步进(同样,可能是不合适的单词选择)?

  3. 是否有最大大小
    再次,我知道有很多的上下文推理会影响这一点,但是考虑到当前的网络、浏览器,是否存在不宜大的文件大小,或者它是否严重依赖于服务器和网络?如果有一个很好的概括,这就是我很好奇的。

这可能是不言而喻的,但我不是服务器/网络专家,只是一个前端开发人员,正在寻找一些合理的默认值来指导资产优化的快速决策。

4

1 回答 1

3

它实际上取决于服务器、网络和客户端。

使用常识,是基本答案:不要尝试发送几兆字节的位图,否则页面加载时间将与该人试图下载任何其他几兆字节的文件一样长。另一方面,在一个页面上的一堆 PNG 对于大多数现代用户来说并不会真正引起注意。在比您要求的更多计算领域中,不要滥用 iframe 将人们重定向到其他网页的几个步骤。

如果您想了解有关实际传输的更多信息,单个 TCP 数据包的最大大小在技术上是 64kB,但您实际上不会在单个数据包中发送超过 1.5kB。但是,TCP 是基于流的,因此数据包大小几乎无关紧要。你应该更关心现代机器的带宽,考虑到我们现在视频资产流的效率,我真的不认为你应该过分担心向你的用户提供未压缩的资产。

由于实际传递错误的频率相对较低(必须通过 TCP 进行纠正),以及相对于大多数现代网页的大小而言数据包的大小非常小,它的传递时间将与总大小几乎呈线性增长(同样,就像一个巨大的文件)。我忽略了一些关于多阶段网页交付的细节,但是当您交付高资产数量的网页时,它们大多会被忽略。

编辑:为了解决您对传输实际 html/js 文件的担忧(在标题中),它们只是传输中的文本。浏览器会为您完成所有的渲染和代码运行。如果您只有一个 jpg,它将在很大程度上掩盖您在页面上拥有的任何html/js。

传输大小:TCP 连接的最大数据包大小

http流(粗略):http ://www.http.header.free.fr/http.html

基本上,当您获得代表整个页面的主要 html 文档(来自您访问页面的初始请求)时,您解析指定为图像或脚本的其他 URL,并请求服务器将这些 URL 传递到您的会话. 链接的页面很旧但仍然相关,并且(我希望)易于理解。

如果您想要现代用户的实际带宽统计信息,那可能对我来说太多了。但如果您想了解更多技术信息,维基百科关于 HTTP 和 TCP 的页面非常棒。

于 2013-08-07T20:41:33.220 回答