将<script>标记放在JSP文件中的最佳位置是什么?

时间:2015-09-01 08:07:56

标签: javascript html jsp

我有一堆JSP文件和大约10-12个javascipt文件,我使用include标记包含在每个JSP文件中,如下所示:

&#xA;&#xA;
  &lt;%@ include file =“common_js_files.jsp”%&gt;&#xA;  
&#xA;&#xA;

我已经看过我应该把&lt; script&gt;放在哪里? HTML标记中的标记?

&#xA;&#xA;

根据给出的答案,许多人同意在&lt; script&gt; 标记之前放置关闭身体标签。我希望这会减少页面加载时间,但它不会改变加载时间。以上链接中提到的情况仅适用于HTML页面吗? JSP页面怎么样?

&#xA;&#xA;

请建议是否有更好的方法在JSP页面中处理这些常见的javascript文件。

&#xA;&#xA;

谢谢。提前

&#XA;

2 个答案:

答案 0 :(得分:3)

在浏览器中JSP将转换为/解释为HTML,因此JSPHTML的最佳做法相同,并说:

  

许多Web开发人员建议在页面底部加载JavaScript代码以提高响应速度,这对于HTML服务来说更为重要。在NATIVE沙箱模式下,您加载的所有脚本都会在客户端进行扫描和清理,这可能需要几秒钟。

     

将标记移动到页面末尾将允许在处理JavaScript之前呈现HTML内容,从而允许您向用户显示微调器或其他消息。

如需进一步阅读,请查看:

答案 1 :(得分:2)

解决此问题的旧方法是将标记放在您的底部,因为这样可以确保解析器在最后期间不会被阻塞。

这种方法有其自身的问题:在解析整个文档之前,浏览器无法开始下载脚本。适用于大型脚本和大型网站的大型网站样式表,能够尽快下载脚本对性能非常重要。如果您的网站在2秒内没有加载,人们将转到另一个网站。

在最佳解决方案中,浏览器会尽快开始下载脚本,同时解析文档的其余部分。

现代方法

今天,浏览器支持脚本上的async和defer属性。这些属性告诉浏览器在下载脚本时继续解析是安全的。

异步

<script type="text/javascript" src="path/to/script1.js" async></script>
<script type="text/javascript" src="path/to/script2.js" async></script>

具有async属性的脚本以异步方式执行。这意味着脚本在下载后立即执行,同时不会阻止浏览器。 这意味着可能下载脚本2&amp;在脚本1之前执行。

根据http://caniuse.com/#search=async,80%的浏览器都支持此功能。

推迟

<script type="text/javascript" src="path/to/script1.js" defer></script>
<script type="text/javascript" src="path/to/script2.js" defer></script>

具有defer属性的脚本按顺序执行(即第一个脚本1,然后是脚本2)。这也不会阻止浏览器。

与异步脚本不同,延迟脚本仅在加载整个文档后执行。

根据http://caniuse.com/#search=defer,80%的浏览器都支持此功能。 88%至少部分支持它。

关于浏览器兼容性的重要说明:在某些情况下,IE&lt; = 9可能无序地执行延迟脚本。如果您需要支持这些浏览器,请先阅读此内容!

结论

当前最先进的技术是将脚本放在标记中并使用async或defer属性。这样可以在不阻止浏览器的情况下尽快下载脚本。

好消息是,您的网站仍然应该在20%不支持这些属性的浏览器上正确加载,同时加速其他80%。

Source