代码之家  ›  专栏  ›  技术社区  ›  razenha

JSF RichFaces前端性能调整

  •  4
  • razenha  · 技术社区  · 15 年前

    我使用myfaces 1.2.6和richfaces 3.3.1ga(刚刚升级)开发了一个Web应用程序。 尽管易于使用,但我发现RichFaces组件的速度非常慢。

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

    有人对使用richfaces进行前端性能调优有什么建议吗?

    谢谢。

    3 回复  |  直到 13 年前
        1
  •  12
  •   Damo    15 年前

    读一读 this article .

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

    • 在一个文件中加载所有脚本。
    • 不加载脚本(你自己来做,例如按照你的书中规定的方式)。
    • 需要时加载脚本(默认)。

    但一些基本原则:

    • 不要把逻辑放在你的行家里。 它们被多次调用, 应该只归还一些东西 由另一个方法填充。为了 例如,如果您正在链接 下拉列表一起使用 a4j:support 在第一个标签上 具有加载的操作属性 当 你把第二个重放一遍。

    • 使用 ajaxSingle="true" 除非 你真的想把整个 回到服务器。

    • 如果您 只需要一个普通的。例如 不要使用 rich:dataTable 除非你 正在利用 它拥有的功能 h:dataTable .

        2
  •  0
  •   Kumar D    14 年前

    你可以使用: org.ajax4jsf.default_过期 三千一百五十三万六千

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

    此外,我们不必担心是否更改richfaces版本,因为当更改richfaces版本时,它将生成不同的文件。

        3
  •  0
  •   Naresh S    13 年前

    要添加到DAMO,还可以添加一个小过滤器来缓存这样的JS或图像,以提高性能。但是,如果打算cach的文件涉及频繁的更新,那么在执行此操作时要小心。

    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);
            }
      }