Yahoo公布了改善web应用性能的最佳实践列表。
Click框架提供了一个PerformanceFilter 去迎合当中的一些规则。然而不是所有的规则都很容易的被实现。
这一节将会概括应用PerformanceFilter 没有包括的规则的方法,#1 - Minimize HTTP Requests (by combining files) 和 #10 - Minify Javascript and CSS.。
规则1也涉及到CSS Sprites, 把多个图片结合一个的方法。这里不谈论CSS Sprites。
不是每个页面都需要优化的,应该集中在经常被访问的页面,例如主页面。
有些工具对规则1和10是有用的。
下面的文章概括出怎样使用YUICompressor和使用Ant将JavaScript和CSS文件结合和压缩:
使用上面的一个方法你可以连接压缩所有的JavaScript和CSS文件成2个独立的文件。例如home-page.css和home-page.js。注意这两个文件必须包括所有的JavaScript和CSS文件,通常这些文件是Page和Control使用的。之后只需要让Click包含这2个压缩的文件,home-page.css和home-page.js。
Click使用工具类PageImports引入CSS和JavaScript。PageImports有一个setInitialized(boolean)方法,使用这个方法设置PageImports初始化完成。一旦PageImports完成初始化,其他的CSS和JavaScript不再会被引入。
重载Page.getPageImports()方法,引入必要的JavaScript和CSS文件然后设置PageImports已完成初始化,迫使PageImport跳过其他的CSS和JavaScript文件。
public class HomePage extends Page { private Form form = new Form("form"); public void onInit() { form.add(new EmailField("email"); addControl(form); } public void getPageImports () { PageImports pageImports = super.getPageImports(); String contextPath = getContext().getRequest().getContextPath(); String cssInclude = contextPath + "/assets/css/home-page.css"; pageImports.addImport("<link type=\"text/javascript\" href=\"" + cssInclude + "\"/>"); String jsInclude = contextPath + "/assets/js/home-page.js"; pageImports.addImport("<script type=\"text/javascript\" src=\"" + jsInclude + "\"></script>"); // Set pageImports to initialized so that no other CSS and JavaScript files will be included. pageImports.setInitialized(true); } }
border-template.htm
<html> <head> <title>Click Examples</title> ${cssImports} </head> <body> ... ${jsImports} </body> </html>
HTML要包括一个CSS和JavaScript文件:
<html> <head> <title>Click Examples</title> <link type="text/css" rel="stylesheet" href="/click-examples/assets/css/home-page.css" title="Style"/> </head> <body> ... <script type="text/javascript" src="/click-examples/assets/js/home-page.js"></script> </body> </html>