我的问题是可以加载整个css或javascript目录的两倍?这样做有什么好处吗?
示例 - 对于电子商务商店,您可能拥有功能/样式所需的大量额外css和javascript。将js/checkout
目录中所需的所有javascript文件放入然后导入整个目录似乎比单独调用每个文件更加简化。
有可能这样做吗? 或者有什么理由这是个坏主意吗?
答案 0 :(得分:3)
不是单独加载它们,而是在部署中添加构建步骤,以便将所有CSS和JavaScript缩小为两个文件。然后提供这两个文件,这样只发送两个东西,而不是可能还有很多东西。
此外,尽管从头开始创建构建系统可能很“有趣”,但您可能需要查看一些已经拥有大量后续内容的构建工具。我之前使用过Dojo Toolkit,效果很好。您可以Asynchonous Module Definitions (AMD)使用它,这也可以减少您需要的请求数量。我听过的另一个特别的JS构建系统(尽管我还没有使用它)是Grunt。
请注意,有一个权衡选择。使用AMD可以帮助您减少仅加载所使用脚本的请求的总数。相比之下,下载一个包含所有可能脚本的巨大JS文件。
如果您有100个 5kb 脚本文件,则一个超级缩小的脚本(如果分号,名称修改和删除换行符没有大小增加)可以 500kb 。它需要一个请求来接收该脚本,并假设请求平均需要 1kb 。这意味着,总的来说,大型剧本会花费你 101kb 。
现在考虑使用AMD的成本。让我们说在一个特定页面上你只使用其中7个 5kb 脚本,并且请求仍然只需要1kb。我们还假装AMD库的开销 10kb 。该页面的费用为 52kb ((7 * (1kb + 5kb)) + 10kb)
正如您所看到的,使用AMD方法而不是构建将导致更多请求,但在成本方面会给您带来净收益。此 ALSO 不考虑缓存之前已加载的内容。
此外,如果用户浏览整个网站,访问每个网页,导致每个脚本都被下载,那么您将花费 610kb (100 * (5kb + 1kb)) + 10kb
。但是,如果你使用缩小的脚本,它只会花费你 501kb 。
哦,不要以为AMD与One Mega Script会对缩小产生影响。在这两种情况下,缩小都有助于减少请求大小。