使用Extjs6开发的平台在互联网部署使用,客户反馈第一次加载速度太慢。经过最近几天的摸索研究终于30秒减少到3秒左右的加载时间,算是达到了个满意的结果,以下是优化步骤记录。
第一次加载请求资源大小在
1、使用sencha cmd 打包项目。
使用命令: sencha app build production ,如果在打包过程中发现问题,或打包成功后发现部分页面无法访问,可以先使用sencha app build testing 打包不压缩js,方便测试。 我遇到个问题,项目中引用了外部的js,结果打包的时候把外包引用的js也压缩了,导致部分界面无法打开,app.json里面引用外部js时 {path:'xxxxxxx.js',remote:true}。remote:true 引用外部js,但不压缩。
2、tomcat设置Gzip压缩
<Connector port="88" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
useSendfile="false"
compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain,application/json" />
application/json 我开启了ajax的json数据压缩,一个grid列表数据请求没有压缩18k,压缩后2.4k。
3、使用CDN加速,如果使用CDN加速,那么请在CDN配置里面开启智能压缩。tomcat配置的压缩对用户来说无效。
好处就是解决服务端带宽出口问题,静态资源不需要从服务端加载,减少服务端请求次数和占用带宽。解决因为地域、网络供应商导致的请求慢问题。
用户 ---> CDN服务器 ---> 项目服务器
CDN服务器请求项目服务器是GZIP的压缩文件,但是从CDN服务器返回给用户的还需要CDN服务器设置返回的方式,否则无压缩。
服务器带宽1M,本地测试带宽6~8M,测试全部不使用缓存功能
http://www.cfcmms.com 开启CDN加速+GZIP压缩,第一次请求耗时:3.4秒。
http://cfcmms.com 开启IIS的GZIP压缩,第一次请求耗时:13秒。
http://cfcmms.com:88/ 无压缩 无加速,第一次请求耗时:44秒。