﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-paulwong-随笔分类-EXTJS</title><link>http://www.blogjava.net/paulwong/category/37333.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 22 Apr 2011 00:58:00 GMT</lastBuildDate><pubDate>Fri, 22 Apr 2011 00:58:00 GMT</pubDate><ttl>60</ttl><item><title>ExtJs性能优化</title><link>http://www.blogjava.net/paulwong/archive/2011/04/21/348750.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 21 Apr 2011 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2011/04/21/348750.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/348750.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2011/04/21/348750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/348750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/348750.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
在使用ExtJs过程中，性能一直是一个比较头疼的问题，从用户的角度来看，就一个字：慢。从技术的角度来说，这个&#8220;慢&#8221;字可以分为两种，加载&#8220;慢&#8221;和渲染&#8220;慢&#8221;。想分辨这两种情况很容易：如果居于网不慢而互联网上慢，说明是加载慢；如果Chrome不慢而IE慢，就是渲染慢。还有另一种情况：越用越慢，这个&#8220;慢&#8221;通常是内存泄露造成的。<br />
<br />
针对以下这三种情况讨论一下解决方案：<br />
<br />
1，加载慢<br />
<br />
1.1 减少要加载的东西<br />
<br />
不要动不动就ext-all.js，extjs是可以定制的，如果你用不到tree，就不要包含这个组件了。ExtJs的官网上有详细的定制方法和工具。<br />
<br />
1.2 给出合适的用户提示<br />
<br />
把Js后置，然后前面做一个加载的提示。如果像Gmail那样给出进度条，或者像很多网游那样来点图片或者Tips啥的就更好了，说不定用户还会觉得怎么加载这么快，我还没看清楚呢，呵呵。<br />
<br />
1.3 用的时候再加载<br />
<br />
动态加载，参考使用ExtJs开发MIS系统（2）：Js的动态加载。<br />
<br />
1.4 只加载一次<br />
<br />
别用iframe了，如果你的静态内容过期做的不好，浏览器会经常再不厌其烦的从服务器下载同样的东西。<br />
<br />
1.5 对你的Js添加过期标记<br />
<br />
ext-base.js、ext-all.js都可以设置很长的过期时间，甚至永不过期（如果你不换extjs的版本）。这点对所有静态内容都很有用，如何设置过期标记请垂询Google。<br />
<br />
2，渲染慢<br />
<br />
2.1 少加载少解析、晚加载晚解析<br />
<br />
1.1，1.3，1.4都对改善渲染慢的情况有效——加载的少了自然渲染的快了。<br />
<br />
2.2 别用iframe<br />
<br />
iframe不仅仅可能会使浏览器加载两遍，还一定会使浏览器解析两遍，放弃它吧，真的。<br />
<br />
2.3 精心设计你的Js代码<br />
<br />
例如缓存getElementByID()的结果、编译查询表达式之类的东西，这个纯看Js功力。<br />
<br />
2.4 可能的话，让用户换个浏览器吧<br />
<br />
Chrome比IE的Js渲染快是数量级上的差异！构造一个40列，50行的复杂GridPanel试试，你就会深有体会了&#8230;&#8230;对于企业内部的MIS系统，换浏览器还是具有可能性的。<br />
<br />
3，内存泄露<br />
Ext性能调优方案<br />
<br />
1. 将JS进行合并压缩。<br />
<br />
使用yahoo的yui-compress.jar进行压缩JS，去掉过多的空格和注释，并合并，减少IO的支出。<br />
<br />
2. 将前后台传输的数据进行GZIP压缩。<br />
<br />
大数据量的数据传输，通过GZIP的压缩方案，可以减少到25%，有些数据可能会更多。<br />
<br />
3. 对大量的JS分析依赖关系，进行动态加载。<br />
<br />
这个是关键，通过分析所有的JS中的依赖关系，减少了JS加载的数量。从很大程度上提高了性能。<br />
<br />
4. 另外对部分页面进行缓存，而非真正的关闭。<br />
<br />
还有一个外部的因素，由于系统使用的客户机环境上的复杂，我们在多个浏览器上进行了测试，只有IE是最慢的，尤其是IE6，后来发现不是IE6要比IE7慢，是因为发现MS发布了脚本引擎cscript 5.7, 而大部分的ie6系统都装的是5.6, 这个版本上的升级，不仅仅是修改了BUG，在JS的执行速度上也有了较大的提升，于是我们在环境因素上又加上了一条，要求客户安装cscript5.7，也大大的提升了页面的打开时间。<br />
<br />
<img src ="http://www.blogjava.net/paulwong/aggbug/348750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2011-04-21 23:25 <a href="http://www.blogjava.net/paulwong/archive/2011/04/21/348750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GZip压缩和按需装载提升Ext Js的性能</title><link>http://www.blogjava.net/paulwong/archive/2011/04/21/348748.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 21 Apr 2011 15:17:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2011/04/21/348748.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/348748.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2011/04/21/348748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/348748.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/348748.html</trackback:ping><description><![CDATA[ext-all.js这个文件都有500多k，在页面中直接引用这个js文件是很不现实的，曾经在一个大的项目中使用这个js，则直接导致页面半天出不来的后果。于是自己研究了下，目前通过下面的方法来优化提升Ext Js的性能。<br />
<br />
使用JSVM<br />
JSVM (JavaScript Virtual Machine的缩写)，一个JavaScript基础框架，sourceforge开源项目，由万常华（wch3116）于2003年底发起, 目前最新版本是2.05,采用的是 BSD License 授权协议。本身JSVM也提供了JSVM+Ext2的实例，看看就知道怎么在JSVM下加入ext的js库了。<br />
我在项目中是这么用的：<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;src</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/depporject/comjs/jsvm2/jsre.js</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;classpath</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">dom2.gzjs;ext2p.gzjs</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;modules</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">smartloader</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span></div>
<br />
<span><span style="background-color: #f8f8f8; color: #000000">为什么扩展名是gzjs呢，这是使用了gzip压缩js文件</span></span><br />
<br />
使用Gzip压缩 <br />
<br />
gzip压缩后，ext js文件的大小将只有100k左右。<br />
只是对gzip压缩的文件需要提供filter（Java开发），为你的应用提高解压缩功能,filter的写法很简单：<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;doFilter(HttpServletRequest&nbsp;request,&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response,&nbsp;FilterChain&nbsp;chain)&nbsp;<br />
<img id="Codehighlighter1_170_516_Open_Image" onclick="this.style.display='none'; Codehighlighter1_170_516_Open_Text.style.display='none'; Codehighlighter1_170_516_Closed_Image.style.display='inline'; Codehighlighter1_170_516_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_170_516_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_170_516_Closed_Text.style.display='none'; Codehighlighter1_170_516_Open_Image.style.display='inline'; Codehighlighter1_170_516_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;&nbsp;IOException,&nbsp;ServletException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_170_516_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_170_516_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img id="Codehighlighter1_250_461_Open_Image" onclick="this.style.display='none'; Codehighlighter1_250_461_Open_Text.style.display='none'; Codehighlighter1_250_461_Closed_Image.style.display='inline'; Codehighlighter1_250_461_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_250_461_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_250_461_Closed_Text.style.display='none'; Codehighlighter1_250_461_Open_Image.style.display='inline'; Codehighlighter1_250_461_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(Iterator&nbsp;it&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;headers.entrySet().iterator();it.hasNext();)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_250_461_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_250_461_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map.Entry&nbsp;entry&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Map.Entry)it.next();&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.addHeader((String)entry.getKey(),(String)entry.getValue());&nbsp;</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chain.doFilter(request,&nbsp;response);&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img id="Codehighlighter1_592_910_Open_Image" onclick="this.style.display='none'; Codehighlighter1_592_910_Open_Text.style.display='none'; Codehighlighter1_592_910_Closed_Image.style.display='inline'; Codehighlighter1_592_910_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_592_910_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_592_910_Closed_Text.style.display='none'; Codehighlighter1_592_910_Open_Image.style.display='inline'; Codehighlighter1_592_910_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;init(FilterConfig&nbsp;config)&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;&nbsp;ServletException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_592_910_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_592_910_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;headersStr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;config.getInitParameter(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">headers</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;headers&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;headersStr.split(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);&nbsp;<br />
<img id="Codehighlighter1_769_903_Open_Image" onclick="this.style.display='none'; Codehighlighter1_769_903_Open_Text.style.display='none'; Codehighlighter1_769_903_Closed_Image.style.display='inline'; Codehighlighter1_769_903_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_769_903_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_769_903_Closed_Text.style.display='none'; Codehighlighter1_769_903_Open_Image.style.display='inline'; Codehighlighter1_769_903_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;headers.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_769_903_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_769_903_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;temp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;headers[i].split(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;.headers.put(temp[&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;].trim(),&nbsp;temp[&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;].trim());&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />}&nbsp;</span></div>
<br />
<span>web.xml配置</span><br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">&nbsp;filter&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">&nbsp;filter-name&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;addHeaderFilter&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">&nbsp;filter-name&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">&nbsp;filter-class&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org&nbsp;.common.AddHeaderFilter&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">&nbsp;filter-class&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">&nbsp;init-param&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">&nbsp;param-name&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;headers&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">&nbsp;param-name&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">&nbsp;param-value&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;Content-Encoding&nbsp;=&nbsp;gzip&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">&nbsp;param-value&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">&nbsp;init-param&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #0000ff"><font color="#000000">&nbsp; </font>&lt;/</span><span style="color: #800000">&nbsp;filter&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span></div>
<br />
通过以上两步，整个页面装载速度很快了。大家可以试试。<br />
另外在实际开发中，并不是将ext-all.js全部在jsvm中装载，只是将常用的ext js代码归到一起，由gzip压缩，然后又jsvm装载（即ext2p.js，p代表部分），剩下的ext js代码由jsvm按需装载。<img src ="http://www.blogjava.net/paulwong/aggbug/348748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2011-04-21 23:17 <a href="http://www.blogjava.net/paulwong/archive/2011/04/21/348748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EXTJS入门</title><link>http://www.blogjava.net/paulwong/archive/2009/01/21/252238.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 21 Jan 2009 08:32:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2009/01/21/252238.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/252238.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2009/01/21/252238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/252238.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/252238.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: EXTJS是一个兼容AJAX的前台WEB UI的框架，在普通的HTML文件的 BODY 元素中无须写任何HTML代码，就能产生相应的表格等元素。<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/paulwong/archive/2009/01/21/252238.html'>阅读全文</a><img src ="http://www.blogjava.net/paulwong/aggbug/252238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2009-01-21 16:32 <a href="http://www.blogjava.net/paulwong/archive/2009/01/21/252238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>