在哪里插入脚本块

时间:2009-05-14 16:41:13

标签: asp.net javascript master-pages unobtrusive-javascript

dillema是这样的:

如果我尝试在主页面上包含所有脚本块(在某些框架中包含页面),每个页面都会获得每个脚本的副本(包括它们不需要的脚本),这些脚本会快速累加并膨胀页面大小

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

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

5 个答案:

答案 0 :(得分:1)

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

当然,只要您不将JS文件的内容放在页面本身中! : - )

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

请务必使用YUI CompressorWhat do you use to minimize and compress JavaScript libraries?中提到的其他工具压缩/缩小所有外部JavaScript库。

答案 3 :(得分:0)

如果你缩小你的脚本,这不是一个大问题,缩小后jquery大约为50k。

答案 4 :(得分:0)

我们缩小,合并和gzip我们的站点JS(实际上大约17个文件合并为两个文件,一个用于我们所有的代码,一个用于库代码,如mootools和clientcide)。这大大减少了下载脚本所需的时间。完成压缩和合并,并在服务器上缓存并缓存,因此开发速度不会太慢。一旦按照上述方式进行压缩,我们对全网友好的JS总计大约为50K。

我们还在文件上设置了一个很长的过期时间,这些文件都有一个版本号,所以当我们进行更改时,我们会更新版本号(我们有一个全站点的文件可以让它变得简单)并且用户被迫获得一个新的版本,一旦下载,它们就会被浏览器缓存。

除此之外,我们已经将我们的JS放在页面的页脚上,这样可以更快地呈现所有内容,并在下载JS时为用户提供一些内容。

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