手机版

为Extjs加加速(javascript加速)

时间:2021-11-23 来源:互联网 编辑:宝哥软件园 浏览:

EXT的所有js都比较大,一个ext-all-debug.js超过2m长,其压缩版本(不包括js中的换行符和空格)也超过600k,这意味着在网速不太快的情况下,下载JS需要很长时间。日历任务控件中有四五个js,每个js的大小都在70k以上。虽然我们采用后加载的方式,只有当用户点击我的任务功能的时候才会下载js,但是这个还是很慢的,因为下载的JS非常慢。有鉴于此,在互联网上使用Joffice这样的程序的速度会让很多开发者不敢选择ext作为开发技术。我们可以通过以下方法提高应用程序的运行速度:1 .在早期阶段尽量少加载js。这在Joffice中是一个很好的应用,由ScriptMgr.load方法完成。加载后会在正文中插入一个div,只要当前页面没有刷新,下次访问这个函数就不用加载js复制代码如下:函数$ import JS (viewname,callback){ var b=document . getelementbyid(view name '-hiden ');if (b!=null){ var view=eval(' new ' viewName '()');callback.call(this,view);} else { var jsArr=eval(' app . import js . ' viewName);if(JSarr==undefined){ var view=eval(' new ' viewName '()');callback.call(this,view);返回;} script mgr . load({ scripts : jsArr,callback : function() { Ext。dohelper . append(document . body,' div id=' ' viewName '-hiden ' style=' display : none '/div ');var view=eval(' new ' viewName '()');callback.call(this,view);} });} 2.用Gzip对js进行超级压缩。Gzip的官网是:http://www.gnu.org/software/gzip/GZIP好用,解压到一个目录,你会看到一个Gzip.exe文件,然后在命令窗口输入目录,执行gzip ext-all.js ext-all.js,马上换成ext-all.js.gz。尺寸从600 K以上变成了160 K以上,小了很多。这一次,下载速度非常快。那么浏览器能解析这个压缩文件吗?答案是肯定的,前提是告知浏览器这个文件需要解压然后执行,解压过程由浏览器执行。应用程序如何告诉浏览器文件需要解压缩?这必须由服务器通过Http Header指令来完成。在办公室,这是通过过滤器完成的。1.将ext.all.js.gz的文件名更改为ext.all.gzjs,过滤器将在以后拦截对该文件的访问。

2.写一个过滤器,完成向页眉添加指令代码如下:复制代码代码如下:包com。htsoft。核心。网络。过滤器;导入Java。io。ioexception导入Java。乌提尔。HashMap导入Java。乌提尔。迭代器;导入Java。乌提尔。地图;导入javax。servlet。过滤器;导入javax。servlet。过滤链;导入javax。servlet。FilterConfig导入javax。servlet。servletexception导入javax。servlet。servlet请求;导入javax。servlet。servlet响应;导入javax。servlet。http。HttpServletrequest导入javax。servlet。http。HttpServletResponse公共类GzipJsFilter实现筛选器{ Map headers=new HashMap();public void destroy(){ } public void doFilter(servlet request、ServletResponse res、FilterChain)引发IOException,ServletException { if(HttpServletrequest的请求实例){ doFilter((HttpServletrequest)req,(HttpServletResponse)res,chain);}else { chain.doFilter(req,RES);} } public void DoFilter(httpersvletrequest请求,HttpServletResponse响应,过滤器链链)引发IOException,ServletException { request。setcharacter encoding(' UTF-8 ');对于迭代器(它=headers.entrySet().迭代器();它。hasnext();){地图。条目条目=(地图入口)它。next();response.addHeader((字符串)entry.getKey(),(字符串)入口。getvalue());} chain.doFilter(请求、响应);}公共void init(FilterConfig config)引发ServletException { String header rsstr=config。getinitparameter(' headers ');字符串[]标题=标题字符串。split(',');for(int I=0;我标题。长度;I){ String[]temp=header[I].split('=');this.headers.put(temp[0]).微调(),温度[1]。trim());} } } 3.在WEB.xml文件中,添加以下配置:复制代码代码如下:筛选器筛选器-NamegZipjsfilter/filter-name filter-class com。htsoft。核心。网络。过滤器。gZipjsfilter/filter-class init-param param-name headers/param-name param-value content-Encoding=gzip/param-value/init-param/filter-filter-mapping filter-NamegZipjsfilter/filter-name URL-pattern * .gzjs/url模式中尉./filter-mapping servlet-mapping 4 .在index.jsp中引入该压缩文件:脚本类型=' text/JavaScript ' src=' http :%=request。getcontextpath()%/ext3/ext-all。gzjs /脚本

可以看到,浏览器解压后,其代码是一样的:

上面可以看到,这一块用在外网,速度比较快。当然,浏览器解压这个文件需要一点时间,但是本地解压非常快,不用担心。虽然不能完全解决速度问题,但还是可以帮忙的。

版权声明:为Extjs加加速(javascript加速)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。