我已经使用MyFaces 1.2.6和Richfaces 3.3.1GA (刚刚升级)开发了一个web应用程序。尽管使用起来很简单,但我发现Richfaces组件非常慢。
我还发现他们并没有真正利用浏览器缓存机制,他们每次请求都会发送一些糟糕的JS文件和其他东西。我真的很想应用"High PErformance WEbsites“一书中描述的一些规则,但是我不能改变生成的js和HTML代码。
有谁对使用Richfaces进行前端性能调优有什么建议吗?
谢谢。
发布于 2009-05-22 08:45:41
请阅读this article。
您是否使用Firebug + YSlow来检查缓存中存储的内容?使用web.xml org.richfaces.LoadScriptStrategy设置,您可以告诉Richfaces执行以下任一操作:
但有一些基本原则:
a4j:support标签,该标签具有reRender属性,加载数据,然后当你链接第二个时检索数据。ajaxSingle="true",除非你真的想将整个表单返回给action,如果你只需要一个普通的富组件,就使用富组件。例如,除非您正在使用h:dataTable.之外的一些特性,否则不要使用rich:dataTable
发布于 2010-08-13 14:44:38
您可以使用: org.ajax4jsf.DEFAULT_EXPIRE 31536000
所以所有的js、css文件(由richfaces生成)都会在浏览器上缓存一年。这确实提高了我们项目的速度。
此外,我们不需要担心是否更改了richfaces版本,因为当我们更改richfaces版本时,会生成不同的文件。
发布于 2011-03-08 15:51:29
要添加到达摩,您还可以添加一个小过滤器来缓存这样的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);
}
}https://stackoverflow.com/questions/891597
复制相似问题