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 前端性能调优的主要内容,如果未能解决你的问题,请参考以下文章