google pagespeed表示加载primefaces.js会降低我的页面速度:
来自pagespeed报告:
推迟解析JavaScript 通过最小化JavaScript的数量 需要呈现页面,并推迟解析不需要的 JavaScript直到需要执行,你可以减少初始 加载页面的时间。
Suggestions for this page
284.3KiB of JavaScript is parsed during initial page load. Defer parsing JavaScript to reduce blocking of page rendering.
https://www.mysite.co.uk/.../primefaces.js.xhtml?... (185.4KiB)
https://www.mysite.co.uk/.../jquery.js.xhtml?... (95.1KiB)
我该如何解决这个问题?
答案 0 :(得分:0)
为遇到相同问题的其他人添加此问题的其他解决方案。
您需要自定义素数HeadRenderer
以实现pagespeed建议的排序。虽然这可以由PrimeFaces实现,但我在v5.2.RC2中没有看到它。这些是encodeBegin
中需要更改的行:
96 //Registered Resources
97 UIViewRoot viewRoot = context.getViewRoot();
98 for (UIComponent resource : viewRoot.getComponentResources(context, "head")) {
99 resource.encodeAll(context);
100 }
只需为head
标记编写自定义组件,然后将其绑定到覆盖上述行为的渲染器。
现在你不想仅仅为了这个改变而复制整个方法,添加一个名为" last"的方面可能更简洁。并将脚本资源作为新的deferredScript
组件移动到渲染器的开头。让我知道是否有兴趣,并且我将创建一个分支来演示如何。
这种方法是未来的证明"从某种意义上说,当新的资源依赖关系被添加到组件中时,或者当新的组件被添加到视图中时,它不会中断。
答案 1 :(得分:-1)
您可以通过将脚本从head标记移动到正文的末尾(在关闭之前)来推迟页面加载,因此脚本在加载页面标记后开始加载,还要注意,primefaces会自动缓存,因此第一个请求是使用chached脚本的另一个请求。