优化javascript加载的最佳实践
我在网上读了一些关于优化javascript加载的文章。 我得到的几个关键点是最小化脚本文件(http请求)的数量,缩小并启用服务器上的gzip。目前,我所做的是缩小所有javascript文件,并且也可以简单地启用gzip 第1部分) 我的问题是我有大约20个javascript文件,有一个common.js拥有所有核心功能。除此之外,每个页面将加载至少一个实现该页面功能的其他文件 解决方案1是将所有脚本合并到一个大脚本文件中,并为每个客户端加载一次,这似乎是其他所有客户端都在做的事情。我想YUI或JSMin可以用于压缩,所以我应该手动组合文件 解决方案2,在需要所需函数时延迟加载,我不知道这是如何工作的,但这似乎是一种方法,尽管仍然需要更多的http请求。我很想听到这方面的任何意见 第2部分)优化javascript加载的最佳实践,javascript,performance,optimization,loading,Javascript,Performance,Optimization,Loading,我在网上读了一些关于优化javascript加载的文章。 我得到的几个关键点是最小化脚本文件(http请求)的数量,缩小并启用服务器上的gzip。目前,我所做的是缩小所有javascript文件,并且也可以简单地启用gzip 第1部分) 我的问题是我有大约20个javascript文件,有一个common.js拥有所有核心功能。除此之外,每个页面将加载至少一个实现该页面功能的其他文件 解决方案1是将所有脚本合并到一个大脚本文件中,并为每个客户端加载一次,这似乎是其他所有客户端都在做的事情。我想Y
我正在开发的web应用程序将部署到许多其他计算机上,因为Java脚本非常小,所以制作一个脚本,从中央服务器动态加载最新的脚本,以便每个客户端都运行最新的脚本,这是一个好的做法吗?一般最佳做法被认为是
最小化HTTP请求很重要,延迟是性能杀手…第1部分:正如您所说,有两种方法
- 解决方案1是有效的,有很多工具可以做到这一点,包括。问题是在大多数情况下,它需要包含站点上的每一个脚本才能正常工作,因此无论您的页面可能使用什么,它都会得到所有信息
- 解决方案2也是有效的,但正如您所说,它并不能真正阻止多个http请求。但它很好,它只在您需要时加载您需要的内容,并且不会在初始页面加载时创建任何阻塞调用。Head.js是一个提到的选项,以及Require.js和其他选项
- 有几种方法可以强制浏览器始终下载最新的javascript文件,尽管这种方法会否定浏览器缓存的好处。一种常见的方法是在javascript URL的末尾添加get变量,即“domain.com/index.js?timestamp=_123123”。这类似于jQuery在为其ajax调用关闭缓存时所做的操作
- 合并成一个文件并缩小(使用谷歌的闭包编译器)
- 缩小每个文件,然后延迟加载。我个人喜欢使用模块模式定义我的模块。您可以使用启动文件选择编译成一个文件,或者保留模块结构和延迟加载,但每个模块也被缩小
- 您的服务器是否提供gzip javascript
- 如果可能,尝试使用
,如果您有脚本依赖项,请在使用asycn加载时小心。如果您使用AMD模块,它将确保您的依赖模块提前加载,并且每刷新一页只加载一次 - 使用CDN为静态内容提供服务,在内容交付网络上存储图像、文件和javascript
考虑一下。在连接了大多数页面上需要的主脚本之后,我会快速加载其他脚本。如果需要回调,则使用async和defer或内联服务(我就是这么做的)