【发布时间】:2012-11-02 14:47:22
【问题描述】:
我刚刚阅读了这个SE Post,它解释了所问的问题与我所问的类似。如果可能,Yslow 建议组合所有外部 javascript。根据我在某个网站上找到的一些建议,我实际上已经采用了内部 javascript 并将它们制作成一个外部 .js 文件并将其放在我的 /scripts 文件夹中。但这引出了我的 2 个(类似)问题;我认为不需要单独的帖子。
(1) - 如何组合 javascript 代码?只需留一个空行,然后将其他 javascript 复制并粘贴到另一个之后,依此类推,直到全部在一个文件中?
(2) - 我有一个带有 5 个母版页的 asp.net 网站。 5 个中有 4 个有 6 个 javascript 文件(全部缩小,有些是我自己使用的一些有效的压缩工具)。但我在 SE 帖子和在线阅读到您应该在 页面加载后加载脚本。您如何在 asp.net 网站上执行此操作?我所有的 .js 文件都在
@bluesmoon 给出了一个很好、彻底的答案,但我无法理解:
To load a script after page load, do something like this:
// This function should be attached to your onload handler
// it assumes a variable named script_url exists. You could easily
// extend it to use an array of scripts or figure it out some other
// way (see note late)
function lazy_load() {
setTimeout(function() {
var s = document.createElement("script");
s.src=script_url;
document.body.appendChild(s);
}, 50);
}
This is called from onload, and sets a timeout for 50ms later at which point it will
add a new script node to the document's body. The script will start downloading after
that. Now since javascript is single threaded, the timeout will only fire after onload
has completed even if onload takes more than 50ms to complete.
我真的不明白他在说什么或如何实施它。仅此而已...我只需要结合javascript并在页面加载后加载它们(或它)方面的帮助;我在我的母版页或 .aspx 页面中没有看到任何“onload”字样。感谢您为我提供任何帮助或指导!
【问题讨论】:
-
如果您合并并压缩您的 java 脚本。阅读它并不容易。我已经“压缩”了 java 脚本文件,但没有找到任何解压缩脚本的方法。可能还有其他方法可以做到这一点,例如对您的文件进行“g-zip 压缩”。您也可以在页面末尾添加脚本。
-
感谢您抽出宝贵时间回复@krshekhar!如果出现任何问题,或者需要更改某些内容并且我认为我可以做到,我总是会备份我的原始 javascript 文件。我使用了 Fisch 的建议,并将我的所有 .js 文件放在结束正文标记的上方。该网站有 47 个页面,所有页面都正常运行。但是我会看看是否仍然值得添加我在 SE 上找到的代码 sn-p(并在我的问题中说明)。再次感谢您,我将研究 g-zip 压缩,也许将它们合并在一起以减少 http 请求的数量。
标签: javascript asp.net performance onload