我正在阅读这篇如何使HTML呈现快速,它说在HEAD
标记的脚本可以被缓存。
可以在BODY
标签JavaScript缓存?如果没有,为什么YUI建议将脚本放在body标签中?
JavaScript将被缓存(并在页面之间重用),如果它是在一个外部文件和缓存控制头说它应该被缓存。
如果它嵌入在页面本身(即在<script>
和</script>
之间而不是在src="..."
的末尾),它可能会被缓存,但只有当整个页面被缓存并且它不会在页面之间重复使用时。
<script src="..."></script>
是在头部还是在正文中都没有区别。如果缓存整个HTML页面,则会缓存代码,否则不会。现在的HTML页面通常是动态的(由脚本和cgi生成),因此不可能在不牺牲功能的情况下进行缓存。因此,你通常想把JS代码放在外部文件中,然后可以通过设置JS文件的HTTP缓存头来缓存。
在大多数情况下,答案是你不能缓存内联到HTML代码中的JavaScript(在HEAD部分或其他地方)。为了使其可缓存,您需要将其放在外部文件中,但是浏览器将需要执行额外的HTTP请求来第一次获取JavaScript。伙计,我想你可能误解了Rich说的话。他说把JavaScript放到一个外部文件中,然后从头部链接。
这与将JavaScript放到页面主体的script标签中形成对比。
如果JavaScript仅在该页面上使用,那么将JavaScript放入页体中的脚本标记中是合理的。事实上,如果它只使用了一个页面,那么将其放入外部文件中并不是一种优化。对JS文件的额外GET请求在Firefox, Opera, Safari上几乎是同步的,但是在IE6上不是。原因是IE6只有少数(2)个线程用于获取文件,而Firefox有多达16个。这就是为什么为特定于页面的代码使用单独的文件是一种倒退,因为它实际上可能会减慢页面加载速度。
然而,如果你有一个通用的JavaScript文件,你想在许多页面上使用,那么你绝对应该把它放在一个外部文件中,并从头部链接它,因为它将在第一次加载任何这些页面时被缓存,并且当任何其他页面使用它时,它将不需要再次获取。文件越大,缓存它的好处就越大。
我想这就是他想表达的意思。这有帮助吗?