在何处插入脚本块

Where to insert script blocks

提问人:Pita.O 提问时间:5/15/2009 最后编辑:Joel CoehoornPita.O 更新时间:7/14/2009 访问量:214

问:

困境是这样的:

如果我尝试在母版页上容纳所有脚本块(在某些框架中包括页面),则每个页面都会获得每个脚本(包括它们不需要的脚本)的副本,并且这些脚本会迅速加起来并增加页面大小。

如果我在需要的地方包含/插入脚本块,javascript 将遍布整个项目。

我正在努力寻找如何保持适当的平衡。任何人?

asp.net javascript 母版页 unobtrusive-javascript

评论


答:

1赞 PhiLho 5/15/2009 #1

包含所有 JS 文件并不是一个主要问题(除非它们在加载时运行的代码很慢),并且不会使页面膨胀太多:一旦加载它们,浏览器无论如何都会缓存它们,因此它将导致下一个页面的加载时间为 0。

当然,只要你不把JS文件的内容放在页面本身就行了!:-)

1赞 Laurence Gonsalves 5/15/2009 #2

如果你的页面大小膨胀是一个问题,那么也许你应该把你的 Javascript 移到一个单独的 js 文件(甚至多个)中,该文件由需要它的页面引用。这确实意味着对于首次访问者来说,您将有更多的 HTTP 请求,但它使浏览器可以缓存 Javascript,这样它就不需要再次为您网站上的每个页面获取它。

0赞 MahdeTo 5/15/2009 #3

如果你缩小你的脚本,这不是一个大问题,像jQuery这样大的东西在缩小后大约是50k。

1赞 Grant Wagner 5/15/2009 #4

我会尽可能多地将 JavaScript 提取到外部文件中。在母版页中包含最常用的库,但如果任何单个页面需要特定于该页面的 JavaScript,我建议仅在该页面上加载它。保留哪些文件由哪些页面加载的交叉引用,如果看到库被大量页面引用,请将其移动到母版页。.js.js

请务必使用 YUI 压缩器您使用什么来最小化和压缩 JavaScript 库中提到的其他工具来压缩/缩小所有外部 JavaScript 库。

0赞 Pete Duncanson 7/14/2009 #5

我们缩小、合并和 gzip 我们网站范围的 JS(实际上是大约 17 个文件合并成两个文件,一个用于我们所有的代码,一个用于 mootools 和 clientcide 等库代码)。这大大减少了下载脚本所需的时间。压缩和合并已经完成,并且飞行和缓存在服务器上,因此开发速度丝毫没有减慢。我们全站好东西的总 JS 约为 50K,一旦全部压缩,如上所述。

我们还在文件上设置了较长的过期时间,这些文件都有一个版本号,因此当我们进行更改时,我们会增加版本号(我们有一个站点范围的版本号,以便于使用),并且用户被迫获得一个新版本,一旦下载,它们就会被浏览器缓存。

除此之外,我们还将 JS 放在页面的页脚,这样可以更快地呈现所有内容,并在我们下载 JS 时让用户查看一些东西。

一些单独的页面有一个他们需要的脚本(搜索表单等),这些脚本得到与上面相同的处理(即所有需要的文件将被合并、缩小、gzip 压缩),但站点范围的代码保持原样,以便我们可以使用缓存。因此,在这种情况下,我们可以为该页面下载3个JS文件,站点范围,库和自定义代码。