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


 <%@ include file =“common_js_files.jsp”%>



 我已经看过我应该把< script>放在哪里? HTML标记中的标记?


根据给出的答案,许多人同意在< script>
标记之前放置关闭身体标签。我希望这会减少页面加载时间,但它不会改变加载时间。以上链接中提到的情况仅适用于HTML页面吗? JSP页面怎么样?
请建议是否有更好的方法在JSP页面中处理这些常见的javascript文件。


谢谢。提前

答案 0 :(得分:3)
在浏览器中JSP
将转换为/解释为HTML
,因此JSP
和HTML
的最佳做法相同,并说:
许多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%。