JSF Richfaces 前端性能调优

Posted

技术标签:

【中文标题】JSF Richfaces 前端性能调优【英文标题】:JSF Richfaces frontend performance tuning 【发布时间】:2010-10-27 20:32:33 【问题描述】:

我使用 MyFaces 1.2.6 和 Richfaces 3.3.1GA(刚刚升级)开发了一个 Web 应用程序。 尽管易于使用,但我发现 Richfaces 组件非常慢。

我还发现他们并没有真正利用浏览器缓存机制,他们在每次请求和其他事情时都会发送一些糟糕的 JS 文件。 我真的很想应用“高性能网站”一书中描述的一些规则,但我无法更改生成的 js 和 html 代码。

有人对使用 Richfaces 进行前端性能调整有一些技巧吗?

谢谢。

【问题讨论】:

【参考方案1】:

要添加到Damo,您还可以添加一个小过滤器来缓存此类js或图像以提高性能。但如果打算缓存的文件涉及频繁更新,请谨慎执行此操作。

private void cacheImages(HttpServletRequest request, 
        HttpServletResponse response) 
        try 
              String requestPath = request.getRequestURI();
              if (requestPath != null) 
                    if (requestPath.contains("/images/")
                                || requestPath.contains("/scripts/")
                                || requestPath.endsWith(".js")
                                || requestPath.endsWith(".gif")) 
                          response.setHeader("Cache-Control", "max-age=36000");
                    
              
         catch (RuntimeException e) 
              // do nothing except log
              Log.error(this, e);
        
  

【讨论】:

【参考方案2】:

您可以使用: org.ajax4jsf.DEFAULT_EXPIRE 31536000

这样所有的js、css文件(由richfaces生成)在浏览器上缓存1年。 这确实提高了我们项目的速度。

另外,我们不用担心如果我们更改richfaces版本,因为当我们更改richfaces版本时,它会生成不同的文件。

【讨论】:

【参考方案3】:

阅读this article。

您是否使用 Firebug + YSlow 来检查缓存中存储的内容?使用 web.xml org.richfaces.LoadScriptStrategy 设置,您可以告诉 Richfaces:

将所有脚本加载到一个文件中。 不加载任何脚本(您可以自己执行 - 例如,按照您书中规定的方式)。 在需要时加载脚本(默认)。

但是一些基本原则:

永远不要在你的 getter 中加入逻辑。 它们被多次调用并且 应该只返回一些东西 由另一种方法填充。为了 例如,如果您正在链接 下拉菜单一起使用 a4j:support 第一个标签 带有加载的动作属性 然后在何时检索的数据 你重新渲染第二个。

使用ajaxSingle="true" 除非 你实际上想发送整个 表单返回服务器。

如果你不使用丰富的组件 只需要一个普通的。例如 不要使用rich:dataTable,除非你 正在利用一些 它具有超越的功能 h:dataTable

【讨论】:

+1。这是 Dan Allen 的第二篇文章(他是两篇文章的作者,也是 Seam in Action 的作者):jsfcentral.com/articles/speed_up_your_jsf_app_2

以上是关于JSF Richfaces 前端性能调优的主要内容,如果未能解决你的问题,请参考以下文章

性能调优篇一

纯前端生成海报实践及其性能调优

Day819.缓存优化系统性能 -Java 性能调优实战

Day819.缓存优化系统性能 -Java 性能调优实战

Elasticsearch性能调优之磁盘读写性能优化

Web Vitals :Google 如何定义性能指标及帮助开发者调优前端性能 ?