1

谷歌 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)

我该如何解决这个问题?

4

2 回答 2

0

为遇到相同问题的其他人添加另一个解决方案。

您将需要自定义 primefacesHeadRenderer以实现 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组件在渲染器中移动到它的开头可能会更干净。让我知道是否有兴趣,我将创建一个分叉来演示如何。

这种方法是“面向未来的”,因为它不会随着新的资源依赖项添加到组件或新组件添加到视图而中断。

于 2015-04-02T00:44:38.167 回答
-1

您可以通过将脚本从 head 标签移动到正文末尾(在关闭它之前)来延迟页面加载,因此脚本在页面标记加载后开始加载,还要注意 primefaces 会自动缓存,因此第一个请求使用 chached 脚本时彼此越长。

于 2013-11-06T14:05:01.233 回答