将jsf.js放在正文的末尾



我部署了一个Java EE 8 web应用程序。它使用JSF 2.3我用谷歌PageSpeed Insights测试它。一条建议说:

消除渲染阻塞资源

…font/fonts-min.css.xhtml?ln=custom(**.com)
…fullcalendar/fullcalendar.bundle-min.css.xhtml?ln=vendors(**.com)
…base/vendors.bundle-min.css.xhtml?ln=vendors(**.com)
…base/style.bundle-min.css.xhtml?ln=demo(**.com)
…fix/poppins.css.xhtml?ln=custom(**.com)
/javax.faces.resource/jsf.js.xhtml?ln=javax.faces(**.com)

因为jsf.js是jsf框架默认添加的。有没有一个解决方案可以让我在其他java脚本旁边的正文末尾加载它。如果有,那是个好主意吗?

谢谢。

如果使用PrimeFaces,则可以通过上下文参数激活"MOVE_SCRIPTS_TO_BOOTTOM"功能。

这会将所有脚本include(script src="…"(移到底部,并将所有内联脚本(…(合并为一个内联脚本。

这真的是一个巨大的性能提升。

请参阅:https://github.com/primefaces/primefaces/issues/2888

可以使用target="body"属性将脚本放置在正文末尾:

<h:head>
<h:outputScript name="jsf.js" library="javax.faces" target="body"/>
</h:head>

但正如Kukeltje所指出的,请记住,这可能会产生副作用,优化增益可能仅限于第一次请求。

引用实现(mojarra(明确地将此脚本添加到<head>元素中,这可能有充分的理由:

com.sun.faces.renderkit.RenderKitUtils.installJsfJsIfNecessary(FacesContext):

context.getViewRoot().addComponentResource(context, createJsfJs(), "head");

相关内容

  • 没有找到相关文章

最新更新