在生产中使用CSS / JavaScript Source-Maps对性能有何影响?


72
  • 是否应在生产环境中使用源映射?除了调试以外,它们还提供其他好处吗?
  • 由于额外的服务器往返次数,它们是否会影响应用程序加载时间?浏览器是否足够聪明,可以.map在加载和呈现应用程序后加载资产?
  • 如果浏览器找不到.map资产(404错误),会对性能产生影响吗?我应该关心修复它吗?

请注意,.map如果要进行复杂的concat / minimize构建步骤,则修复最后一个可能不如提供资产那么容易。


1
好吧,毫无意义的HTTP请求肯定会占用时间和带宽。
尖尖的2014年

3
我错过了什么?源映射不是用于调试的,您最终不会在生产代码中删除它们吗?
adeneo

4
因为源映射位于注释中,所以我认为浏览器将忽略它们,直到特别要求(例如在开发人员控制台中)为止。
Wex

1
@Wex源映射可以内联或用作单独的.map文件;@others,也许我只是想澄清一下,除调试之外没有其他好处。但是,既然有这么多的js库期望使用.map,例如AngularJS,我们是否通过发明sourcemaps给Web带来了不必要的负担?
雷珊

1
@Wex我也是这么想的,但是有一个明确的答案会很好。仅在开发人员打开开发人员工具时才请求外部.map资产吗?内联源地图怎么样?
温兹尔

Answers:


79

使用Charles Web Proxy进行的快速测试显示,在打开开发人员工具的情况下加载源地图。如果您加载的页面没有打开开发工具的,则不会有http请求提供源映射。

在Chrome 43和Firefox 38中,行为相同。

因此看来它们不会对生产环境造成影响。


0

从HTML5 Rocks:

基本上,这是将合并/缩小的文件映射回未构建状态的一种方法。在进行生产时,连同最小化和合并JavaScript文件,您将生成一个源映射,其中包含有关原始文件的信息。在生成的JavaScript中查询特定的行号和列号时,您可以在源映射中进行查找,以返回原始位置。开发人员工具(当前是WebKit每晚构建的版本,Google Chrome或Firefox 23+)可以自动解析源地图,并使其看起来好像您正在运行未缩小和未合并的文件。

http://www.html5rocks.com/zh-CN/tutorials/developertools/sourcemaps/


3
这根本没有回答问题,只是在解释什么是sourcemap。
pmrotule
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.