【发布时间】:2023-03-20 07:40:01
【问题描述】:
在我的公司,我们有一个内部网,我们的品牌网络文件总共可能有 20 个小图像(基本上是图标)和一堆 js 和 css 文件。我想尝试完全优化性能。我已经完成了所有基本技巧,例如缩小和合并。但是现在对于图像,我想知道最好的方法是什么,因为它是一个具有快速内部下载速度(快速 wan)和双核 i7 计算机的 Intranet。此外,其主要的 6 个办事处分布在加拿大和美国。
我想到了一种方法,我使用一种工具自动将每个图像转换为 base64 编码,然后将它们放入 js 或 css 文件中。然后使用该工具将css填充到js文件中。现在我剩下 1 个 js 文件,其中包含所有 css 和 base64 字符串,大小约为 350KB。也因为它的1个js文件,它可以被缓存在服务器端和客户端。
有谁知道这有什么优点和缺点,以及可以做些什么来改进它?
谢谢
【问题讨论】:
-
不要将 css 放在 js 中,这将比“正常”执行要慢,因为 css 在正文加载之前就已应用,并且您不想等待 JS 发布+在那个时间段解析...
-
我知道让浏览器必须将所有 css 代码插入到 dom 中涉及到额外的工作,但这意味着少了 1 个 http get 请求,而对于我的 i7 机器,我不这样做'认为与加载外部 css 文件相比,最终用户会注意到差异。
-
http 在局域网上非常快,因此没有理由争取“减少 1 个 http 获取请求”。这与 CPU 无关,而是与您正在并行处理的长期优化的渲染管道有关,这会导致几个额外的页面布局步骤,这些步骤甚至可能在并排的情况下很明显。除此之外,您不能像那样注入任何/所有 CSS,因为它会破坏相对路径。 dataURLs 为每个图像增加了 33% 的额外权重,与 reg 图像相比,这可能抵消了额外的标头数据包。然后是每次主题调整的维护噩梦……总之,考虑一下这个方案是否值得……
-
dataURLs 不缓存,因此您每次都必须发送整个图像信息,而不是只发送一次 (etag) 或什么都不发送(遥远的未来 expires)关于 dataURL 的一件很酷的事情是,它们可以很容易地保存页面以供离线查看,如果这很重要的话......
-
@dandavis 是不是dataURL的嵌入到HTML文件中是不缓存的,但是在我的情况下,它们都包含在一个JS文件中,JS文件可以被缓存在服务器端和客户端。
标签: javascript html image performance base64