如果JavaScript位于HTML页面的body标签中,可以缓存吗?

时间:2011-04-25 10:01:46

标签: javascript html caching progressive-enhancement

我正在阅读此How to make HTML rendering fast,它表示可以缓存HEAD标记中的脚本。

可以缓存BODY标记中的JavaScript吗?如果没有,为什么YUI建议将脚本放在body标签中?

3 个答案:

答案 0 :(得分:3)

如果JavaScript在外部文件中,并且the cache control headers说它应该被缓存,则会缓存(并在页面之间重用)。

如果它嵌入页面本身(即<script></script>之间而不是src="..."的末尾),则可以缓存它,但仅当整个页面被缓存时才可以缓存它不会在页面之间重复使用。

如果<script src="..."></script>位于头部或身体中,则缓存没有区别。

答案 1 :(得分:1)

如果缓存整个HTML页面,代码将被缓存,否则将缓存。 HTML页面现在通常是动态的(由脚本和CGI生成),因此无法在不牺牲功能的情况下进行缓存。因此,您通常希望将JS代码放在外部文件中,然后可以通过为JS文件设置HTTP缓存头来缓存这些文件。

答案大多数情况下,您无法缓存嵌入HTML代码的JavaScript(在HEAD部分或其他方面)。要使其可缓存,您需要将其放在外部文件中,但是浏览器需要执行额外的HTTP请求才能第一次获取JavaScript。

答案 2 :(得分:0)

Mate,我想你可能误解了Rich说的话。 他说将JavaScript放入外部文件并从头部链接。

这与将JavaScript放入页面正文中的脚本标记形成对比。

如果仅在页面上使用JavaScript,则将JavaScript放入页面正文中的脚本标记中是合理的。实际上,如果它只使用一个页面,那么将它放入外部文件中并不是一种优化。 JS文件的附加GET请求几乎会在Firefox,Opera,Safari上同时发生,但IE6上的不是。原因是IE6只有几(2)个线程用于获取文件,而Firefox最多只有16个。这就是为什么为页面专用代码设置单独的文件会向后退一步因为它实际上可能会减慢页面加载速度。

但是,如果您有一个常用的JavaScript文件要在许多页面上使用,那么您一定要将它放在外部文件中并从头部链接它,因为它将在第一次缓存时被缓存已加载,当任何其他页面使用它时,需要再次获取。文件越大,缓存它的优势就越大。

我认为这就是他的观点。这有帮助吗?