`
maozhibin
  • 浏览: 5929 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

再谈Ext项目性能优化(公司项目正测试阶段中....)

阅读更多

项目名称:数字苏州 便民地图网

框架:Ext + Dwr

描述:

一、《数字苏州 便民地图网》后台管理(包括用户管理、标注管理、分类信息管理)采用ext+dwr做为框架,也拿来与大家一起讨论与分享。

二、已经对后台主页面所包含的javascript文件和css文件做了一定优化与压缩(javascript在线压缩工具:http://dean.edwards.name/packer/css在线压缩工具http://www.cssdrive.com/index.php/main/csscompressor)。

三、采用YSlow对网站运行进行测试了,测试结果如下:

 

Yslow测试结果

四、网站示意截图如下

1、

苏州便民地图网分类信息管理

2、

苏州便民地图网

分享到:
评论
12 楼 shevliu 2009-02-04  
为什么没看到“优化”的具体内容?
11 楼 liang.zeng 2009-02-03  
我们公司就用ext ,dwr开发,效果还不错。
10 楼 yourgame 2009-01-19  
嘿嘿,楼主,项目怎么样了。再上几个图看看
9 楼 hanjs 2008-12-31  
小心说你泄密,lz最好不要把项目名字什么都写出来。越来越感觉用Ext开发web application,怎么越象cs桌面程序呢?
8 楼 xiaoyu 2008-12-26  
楼主注意哦, 如果代码是在公司里研发的, 版权是属于公司的。
7 楼 maozhibin 2008-12-26  
呵呵,目前公司正在起步阶段,没有那么多人手,也没有美工,都是自己,还有另外两个GIS工程师,前天公司吃饭,老板和我们说了,公司会今年已经完成了预期目标,2009年将扩从投资和员工,并将不断改善我们的网站
6 楼 maozhibin 2008-12-09  
yourgame 写道

这么多代码,看起来很复杂,代码的后期维护工作肯定不好做。http://yourgame.iteye.com/blog/252853 这个是我的一个EXTjs的Demo我也在学习这个框架,总希望能有更好的代码组织规则。还有请问你能提供给我一个测试的帐号么?不胜感激

好的,没问题。等上线测试后,我给你测试号,现在还在局域网测试,你没法访问。
另外:整个后台管理页面的布局、或者说组织规则简述如下:
左侧是导航条,右侧是tablePannel。点击左侧--->右侧便增加一tab项。而每个tab项基本上是一个GridPannel。先大体上介绍一下,明天上公司去再详述。
5 楼 yourgame 2008-12-09  
这么多代码,看起来很复杂,代码的后期维护工作肯定不好做。
http://yourgame.iteye.com/blog/252853 这个是我的一个EXTjs的Demo
我也在学习这个框架,总希望能有更好的代码组织规则。

还有请问你能提供给我一个测试的帐号么?不胜感激
4 楼 maozhibin 2008-12-09  
yourgame 写道

能共享你的代码编写规范么?

不好意思,公司有版权。所以把我写的js部分代码贴出来。供参考
var pageSize = 20;	
var poi_tableName = '',poi_id='',poi_userID='',poi_name='';
var poi_ids = [];
var poi_btn_upgrade=false;
myGrid = function(url, title,id){
    //Ext.BLANK_IMAGE_URL = 'http://localhost:8080/mapscene/member/images/s.gif';
	Ext.BLANK_IMAGE_URL = 'ext-2.2/resources/s.gif'
    Ext.QuickTips.init();
    var xg = Ext.grid;
    rendererOperate = function(value, cellmeta, record, rowIndex, columnIndex, store){
    	var idd = record.data['idd'];
        var name = record.data['name'];
		var userID = record.data['userID'];
		var branchShopName = record.data['branchShopName'];
        var address = record.data['address'];
		var longitude = record.data['longitude'];
		var latitude = record.data['latitude'];
        var telephone = record.data['telephone'];
        var mobile = record.data['mobile'];
        var type = record.data['type'].split('|')[0];
		var childType  =record.data['type'].split('|')[1];
		var cityCode = record.data['cityCode'];
		var commonUserLabel = record.data['commonUserLabel'];
		var nearBusStation = record.data['nearBusStation'];
		var busLine = record.data['busLine'];
		var newMarker = record.data['newMarker'];
		var shopUrl = record.data['shopUrl'];
		var shopIntro = record.data['shopIntro'];
		var imagesUrl = record.data['imagesUrl']!='null'?record.data['imagesUrl']:'';
		var shopHours = record.data['shopHours'];
		var parkingInfo = record.data['parkingInfo'];
		var swipeCard = record.data['swipeCard'];
		var shopkeeper = record.data['shopkeeper'];
		var labelTime = record.data['labelTime'];
        var url = 'labelModify.jsp?idd='+idd+'&name=' + name + '&branchShopName=' + branchShopName + '&address=' + address + '&longitude=' + longitude + '&latitude=' + latitude + '&telephone=' + telephone + '&mobile=' + mobile + '&type=' + type + '&commonUserLabel=' + commonUserLabel + '&nearBusStation=' + nearBusStation + '&busLine=' + busLine + '&newMarker=' + newMarker+ '&shopUrl=' + shopUrl+ '&shopIntro=' + shopIntro+ '&userID=' + userID+ '&cityCode=' + cityCode+ '&childType=' + childType+'&imagesUrl='+imagesUrl+'&shopHours='+shopHours+'&parkingInfo='+parkingInfo+'&swipeCard='+swipeCard+'&shopkeeper='+shopkeeper+'&labelTime='+labelTime;
        var str = "<font color='blue'><a onclick=\"window.open('" + url + "')\" style='cursor:pointer'>修改</a><font>";
        return str;
    }
    activeLaleOperate = function(id, tableName, isValidate){
        if (isValidate == '2') {
			if (i_userType == 2 ) {
				Ext.MessageBox.alert('警告','在地图上显示您的商户,请联系你的代理商进行激活!');
			}else{
				tableName = tableName.split('|')[0];
				Ext.MessageBox.confirm('提示框', '你确定要进行激活操作吗??!', function(btn){
					if (btn == 'yes') {
						Ext.lib.Ajax.request('POST', 'labelManage.jsp', {
							success: function(e, b){
								var oImg = Ext.get(id);
								oImg.src = '/mapscene/member/images/bg3.jpg';
								var message = e.responseText;
								Ext.Msg.alert('信息', message);
								ds.load({
									params: {
										start: 0,
										limit: pageSize
									}
								});
							},
							failure: function(){
								Ext.Msg.alert('错误', '系统忙,请稍候再试!');
							}
						}, 'command=active&id=' + id + '&tableName=' + tableName);
					}
				});
			}
        }else if(isValidate == '1'){
        	if(i_userType ==2){
        		Ext.MessageBox.alert('警告','请联系你的代理商进行反向激活!');
        	}else{
        		tableName = tableName.split('|')[0];
        		Ext.MessageBox.confirm('提示框','您确定要进行反向激活操作吗??!',function(btn){
        			if(btn=='yes'){
        				Ext.lib.Ajax.request('POST','labelManage.jsp',{
        					success:function(e,b){
								var oImg = Ext.get(id);
								oImg.src = '/mapscene/member/images/bg.jpg';
								var message = e.responseText;
								Ext.Msg.alert('信息', message);
								ds.load({
									params: {
										start: 0,
										limit: pageSize
									}
								});        						
        					},
        					failure:function(){
        						Ext.Msg.alert('错误', '系统忙,请稍候再试!');
        					}
        				},
        				'command=unactive&id='+id+'&tableName='+tableName
        				);
        			}
        		});
        	}
        	
        }
        /*else {
            Ext.MessageBox.alert('提示框', '已被激活');
        }*/
    }
    isActive = function(value, cellmeta, record){
        var id = record.data['idd'];
        var isValidate = record.data['isValidate'];
        var tableName = record.data['type'];
        if (value == '1') {
            return "<img id=" + id + " src='/mapscene/member/images/bg3.jpg'  onclick=activeLaleOperate('" + id + "','" + tableName + "','" + isValidate + "') />";
        }else {
            return "<img id=" + id + " src='/mapscene/member/images/bg.jpg' align='未被激活,请联系您的代理商' onclick=activeLaleOperate('" + id + "','" + tableName + "','" + isValidate + "') style='cursor:pointer' />";
        }
    }
    upgradeFn=function(value, cellmeta, record){
    	poi_tableName = record.data['type'].split('|')[0];
    	poi_id = record.data['idd'];
    	poi_name = record.data['name'];
    	return '<a href="javascript:poiUpgrade()">升级</a>';
    }
    viewForumFn=function(value, cellmeta, record){
    	var title=record.data['name'];
    	var iddd = 'forum_'+title;
    	return '<a href="javascript:addForumTab(\''+title+'\',\''+iddd+'\')">查看</a>';
    }
    reader = new Ext.data.JsonReader({
        totalProperty: 'totalProperty',
        root: 'root'
    }, [{name: 'idd'}, 
		{name: 'userID'},
		{name: 'name'}, 
		{name: 'branchShopName'},
		{name: 'address'}, 
		{name: 'telephone'}, 
		{name: 'mobile'}, 
		{name: 'type'},
		{name: 'cityCode'},
		{name: 'commonUserLabel'}, 
		{name: 'shopIntro'}, 
		{name: 'labelTime'},
		{name: 'modifiedTime'}, 
		{name: 'isValidate'},
		{name: 'longitude'}, 
		{name: 'latitude'}, 
		{name: 'nearBusStation'}, 
		{name: 'busLine'}, 
		{name: 'newMarker'},
		{name: 'shopUrl'}, 
		{name: 'imagesUrl'},
		{name: 'shopHours'},
		{name: 'parkingInfo'},
		{name: 'swipeCard'},
		{name: 'shopkeeper'},
		{name: 'operate'},
		{name: 'upgrade'},
		{name: 'viewForum'}
		]
	);
    var ds = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy({
            url: url
        }),
        reader: reader
    });
	sm = new Ext.grid.CheckboxSelectionModel();
	var cm = null;
	if(i_userType==0){
	    cm = new Ext.grid.ColumnModel([
			new Ext.grid.RowNumberer(), 
			sm,
			{header: '名称',sortable: true,dataIndex: 'name'}, 
			{header: '地址',sortable: true,dataIndex: 'address'}, 
			{header: '电话',sortable: true,dataIndex: 'telephone'}, 
			{header: '手机号码',sortable: true,dataIndex: 'mobile'}, 
			{header: '行业类型',sortable: true,dataIndex: 'type'},
			{header: '店铺简介',sortable: true,dataIndex: 'shopIntro'}, 
			{header: '创建时间',sortable: true,dataIndex: 'labelTime'},
			{header: '修改时间',sortable: true,dataIndex: 'modifiedTime',renderer: function(value){if(value=='null'){return '';}else{return value}}}, 
			{header: '是否激活',sortable: true,dataIndex: 'isValidate',renderer: isActive},
			{header: '修改',dataIndex: 'operate',renderer: rendererOperate},
			{header: '升级',dataIndex: 'upgrade',renderer: upgradeFn},
			{header: '评论',dataIndex: 'viewForum',renderer: viewForumFn}
			
		]);
	}else{
	    cm = new Ext.grid.ColumnModel([
			new Ext.grid.RowNumberer(), 
			sm,
			{header: '名称',sortable: true,dataIndex: 'name'}, 
			{header: '地址',sortable: true,dataIndex: 'address'}, 
			{header: '电话',sortable: true,dataIndex: 'telephone'}, 
			{header: '手机号码',sortable: true,dataIndex: 'mobile'}, 
			{header: '行业类型',sortable: true,dataIndex: 'type'},
			{header: '店铺简介',sortable: true,dataIndex: 'shopIntro'}, 
			{header: '创建时间',sortable: true,dataIndex: 'labelTime'},
			{header: '修改时间',sortable: true,dataIndex: 'modifiedTime',renderer: function(value){if(value=='null'){return '';}else{return value}}}, 
			{header: '是否激活',sortable: true,dataIndex: 'isValidate',renderer: isActive},
			{header: '修改',dataIndex: 'operate',renderer: rendererOperate},
			{header: '评论',dataIndex: 'viewForum',renderer: viewForumFn}
		]);		
	}
3 楼 ThinkingInAll 2008-12-09  
宽屏......
2 楼 yourgame 2008-12-09  
能共享你的代码编写规范么?
1 楼 fangzhouxing 2008-12-06  
不错,顶一个!

相关推荐

    Ext JS 4.2 简单环境搭建C#版的

    4. **引入Ext JS库**: 在新建的Web项目中,将解压后的Ext JS 4.2文件夹中的"ext-all.js"(或"ext-debug.js",如果你希望在开发阶段开启调试模式)复制到项目的"Scripts"目录下。同时,把"resources"文件夹复制到项目...

    Ext JS下载及配置

    3. **性能优化**: 对于生产环境,推荐使用压缩后的 `ext-all.js` 文件,以减少加载时间。 通过以上介绍,我们可以看到 Ext JS 提供了一个强大且灵活的前端框架,不仅方便快捷地实现了复杂界面的设计与交互,还极大...

    Ext 3.0.rar

    使用调试版本进行开发和测试,待调试完成后,再转换为压缩和优化过的版本用于生产环境。示例和API文档则帮助开发者快速上手并解决遇到的问题。 总之,"Ext 3.0.rar"提供了一整套开发工具,包括核心库、完整的组件集...

    Ext-JS-4.1-Beta-3.zip

    - `ext-all.js`:生产环境中常用的压缩和优化过的全集文件。 - `ext-debug.js` 和 `ext.js`:分别对应未压缩和压缩的精简版库,只包含基础组件。 4. **ext-neptune-debug-w-comments.js, ext-neptune-debug.js**...

    PyPI 官网下载 | localstack-ext-0.12.5.30.tar.gz

    LocalStack是一款流行的开源工具,它可以在本地模拟AWS(Amazon Web Services)环境,帮助开发者在开发和测试阶段无需实际使用AWS基础设施就能进行工作。LocalStack支持多种AWS服务,如S3、DynamoDB、Lambda等,极大...

    ext.net在vs2008中的配置

    在配置描述中提到的是Coolite 0.8.2版本,而EXT.NET 1.0当时还处于Beta测试阶段。不过,现在的EXT.NET可能已经更新到了更高版本,因此访问官方网站(可能的地址:http://www.ext.net/)获取最新稳定版是必要的。 2....

    PyPI 官网下载 | moto_ext-2.0.3.24-py2.py3-none-any.whl

    "moto" 自身是一个非常流行的库,用于模拟AWS(Amazon Web Services)服务,使得在开发和测试阶段可以无需真实运行AWS服务就能进行操作。"moto_ext" 可能增加了额外的功能、优化了性能或者提供了对moto库未涵盖的AWS...

    性能测试load10-1

    在描述中,虽然没有提供具体细节,但我们可以推断这是一个测试项目,旨在评估系统在特定负载条件下的性能、响应时间和资源消耗。这种测试有助于识别系统瓶颈,优化资源分配,以及确保在实际生产环境中能够处理预期的...

    ext-3.2-beta_6256-157.zip

    标题中的"ext-3.2-beta_6256-157.zip"表明这是一个ExtJS的3.2 beta版本,可能是一个开发或测试阶段的软件包,版本号6256,可能包含了一些修复和改进。 描述中提到的"ext3.2 新版ExtJS ext3帮助文档"可能有两层含义...

    ext2intro.pdf

    - **性能优化**:通过改进的空闲块管理机制,Ext2fs有效减少了磁盘碎片的产生,提高了文件系统的整体性能。 #### Ext2文件系统内部结构 - **超级块**:位于文件系统的起始位置,包含了文件系统的基本信息,如块...

    ext,extJS,js类库

    `ext-2.2.1` 和 `ext-3.0-rc1`代表了不同发展阶段的ExtJS,它们在功能、性能和API设计上有所区别,开发者可以根据项目需求选择合适的版本。通过深入学习和理解这些版本,开发者可以有效地提升Web应用的交互性和功能...

    ssh_extjs项目实例

    8. **性能优化**:SSH_ExtJS项目在开发完成后,还需要关注性能优化。例如,使用缓存提高数据读取速度,对数据库查询进行优化,减少不必要的网络请求,以及利用Ext JS的异步加载和分页技术提高前端性能。 9. **部署...

    项目总结+项目心得体会

    这类文档通常会涵盖需求分析、系统设计、开发实现、测试调试、上线运维等多个阶段的关键点,有助于团队学习项目管理技巧,提高对大型企业级项目的理解。 "Extjs总结.doc"可能是个人或团队在使用ExtJS进行开发后的...

    MySQL 5.1参考手册

    7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具...

    性能测试load10-2

    在这个测试中,"load10-2"可能表示测试设计阶段设定的目标是模拟10倍于正常负荷的用户量,第二次执行或者是对先前“load10-1”测试结果的优化或对比。 在提供的文件名称列表中,我们可以看出这可能与一种名为...

    mysql官方中文参考手册

    7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具...

    MySQL 5.1中文手冊

    7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具...

    MYSQL中文手册

    7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用...

    MySQL 5.1参考手册中文版

    7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用...

    MySQL 5.1参考手册 (中文版)

    7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具...

Global site tag (gtag.js) - Google Analytics