2012-08-17 42 views

回答

1

请考虑到每个外部脚本都需要一段时间才能加载,并且为其提供服务的服务器可能处于脱机状态。

您应该考虑只包含您在当前页面上使用的脚本,而不是用于小事情的世界上的所有库。

可接受数量的外部文件是。从我看来。 如果你想让你的网页流畅运行,你不应该考虑加载任何外部的东西。

外部文件通常包括用于测试目的,当你不想在本地主机上保存脚本,CSS(如:jQuery的jQuery UI的)。但在现场制作时,您应该在主机/服务器上放置它们。也许将来外部服务器将不再可用。

浏览器不会选择要下载的内容,而是下载他所要求的内容。但是,如果脚本失败,或者脚本中有需要额外库的操作,并且该库不可用,则浏览器将停止加载并发出错误。

+0

现在所有的内联脚本也可能不太好,所以也许只有2个,一个jQuery库(或其他库),然后1个额外的有效载荷。所有放在页脚 – 2012-08-17 11:19:03

+0

你的意思是“花时间加载”。由于js文件是文本文件,所以他们下载的时间不会很长。或者也许我错过了一些东西。 – 2012-08-17 12:04:14

+0

您错过了浏览器必须解析DNS的每个文件,连接到服务器并下载该文件的事实。 – 2012-08-17 12:17:03

1

这个问题的答案很复杂。您必须考虑缓存,同时请求的数量以及身份验证等内容。

内联脚本的缺点是您无法充分利用缓存。如果您将脚本移动到外部文件,则重新访问用户仍可能将文件保存在缓存中,并且页面的加载速度会更快。您应该拥有多少个脚本取决于浏览器将同时发出的请求的数量(通常为4),脚本的大小和执行的复杂性。请记住,相同域上的CSS文件或基本上任何资源都会计入此限制。由于现代浏览器会延迟加载,因此您可能会忽略使用media="print"的样式表。

如果你有超过4个脚本,第5个脚本将只在其他4个脚本中的一个被加载时才开始加载。如果这个脚本包含一些on dom ready事件代码,它将被延迟。您可以考虑合并脚本或更改它们加载的顺序。

需要了解的另一个问题是更新。如果你更新你的脚本并且用户仍然保留旧的缓存,你将遇到问题。一些用户甚至可能会得到一些较新的脚本和一些较旧的脚本。确保你有一个适当的机制。我发现指纹识别在缓存管理中非常有用。

你可以考虑一个懒加载原则,你首先只加载最基本的脚本来显示用户绝对必须看到的内容。然后根据需要在后台加载其他脚本。

然后有像谷歌地图这样的第三方服务,你不能实际缓存这些文件,因为它们会随着时间而改变,并可能包含验证步骤以防止滥用等。您对这些脚本的控制有限。

总体而言,这取决于您所制作网站的种类。如果您正在制作更多的业务应用程序,则相对较长的加载时间可能是可以接受的。如果你正在制作一个花哨的促销网站,加载时间绝对是关键,内联脚本可能适合你。

这是一个相当先进的话题,除非遇到实际的性能问题,否则不要太担心它。 Premature optimization is the root of all evil

+0

感谢您的详细解释。我正在进入的真正问题是。我正在制作整个ajax网站,而且我有大量的脚本。我想将它们按照逻辑分隔在文件中,以便在它们上面工作变得简单。你会建议我做什么?也许我应该考虑使用除文件中的代码分离之外的其他方法。我是新的JavaScript。 – 2012-08-17 12:15:33