随笔-59  评论-362  文章-1  trackbacks-4
序: 
   近日心血来潮想做一个
Asp.netajax试验项目,原本是使用Ajax.Net的,但其后发现Asp.net ajax更加容易应用在Asp.net,所以就决定了使用asp.net ajax开发,而且还可以顺便边做边学一下最近园里很热的Asp.net ajax。但在前天看了一篇关于Anthem.NETAsp.net ajax的比较文章后便又尝试了一下Anthem.NET,发现原有项目要实现的东西在Anthem.NET竟然都能实现,并且易用性方面一点也不比asp.net ajax差,在性能方面也有了不少的提升。而在体验到上述优点之后也决定转用Anthem.NET开发原有项目。

    在使用Anthem.NET开发项目的试用手记第一篇,先为大家分析及优化一下
Anthem.NET的性能。

 1、优化前的性能分析
    Anthem.NET 最新1.4CVS版的核心Anthem.dll文件为124K,比起asp.net ajaxMicrosoft.Web.Extensions.dll文件600K的个头小了几倍,而客户端脚本更是只有22KB,比起asp.net ajax几百KB的客户端脚本更是小了不少。可以看出, Anthem.NET更少的代码及脚本代码无疑意味着性能的提升!

 2、优化思路
    Anthem.NET的体积确实已经很小了,但如果能进一步缩减体积无疑会让ajax的性能再次提升,优化Anthem.dll看来没什么必要了,毕竟Anthem.Net的核心已经写得很简洁了,那剩下客户端脚本能不能优化,答案是肯定的。细心的朋友会发现asp.net ajax内置了一个WebResourceCompression功能,其功能主要就是用来压缩客户端脚本的,使用此功能就能让客户端浏览页面的时候加载的客户端脚本体积大大减少,从而实现页面加载速度的提升。但其实Anthem.NET也可以像asp.net ajax那样加上WebResourceCompression来优化性能,那么就让我们来看看下面的实现方法吧。

3、优化的实现方法
    默认
Anthem.NET并没有WebResourceCompression,我们要加上这个功能就要先下载WebResourceCompression功能模块,解压后将WebResourceCompression.dll放在Anthem.NET项目的bin目录下,然后在web.config加入这一句:

<httpModules>
            
<add name="WebResourceCompression" type="WebResourceCompression.WebResourceCompressionModule"/>
</httpModules>

这样加上WebResourceCompression后,我们用Fiddler工具来对比一下使用WebResourceCompression前后客户端加载Anthem.js的体积变化:

压缩前的体积为:22484 bytes

压缩后的体积为:
5921 bytes

    使用
WebResourceCompression后,客户端加载的js脚本减少了差不多5倍,从22KB减少到仅有5KB左右。这样就是说,为你的项目加上Ajax的效果,客户端只需多加载5KB的数据量,相当于多加显示了一幅gif小图片而已!而且脚本只会在第一次浏览页面时进行加载,之后就会进行一定时间缓存。当然,asp.net ajax也有这个功能,但压缩之后体积也比Anthem.NET大十倍以上,这样Anthem.NET第一次启动页面的速度无疑比原来加快了许多!

    综合上面分析及优化,能采用Anthem.NET实现所需要Ajax效果的项目使用Anthem.NET绝对是明智之选!

PS:WebResourceCompression模块是由Asp.net ajax内精简提取出来的模块,对原有Asp.net的兼容性是没有问题的,而且并不局限于Anthem.Net的使用,喜欢的话还可以将模块应用在其它ajax.net或普通的asp.net页面以便进行压缩客户端脚本之用!

posted on 2006-11-25 00:15 Terry Deng 阅读(2035) 评论(25)  编辑 收藏 网摘 所属分类: 品味Anthem.NET

评论:
#1楼  2006-11-25 01:06 | 大剑师      
好,支持你!我怎么没有看到这好东东呢:(
  回复  引用  查看    
#2楼  2006-11-25 07:36 | 兰亭      
我把Anthem.js用Javascript脚本压缩工具压缩一下,只有15K左右。
  回复  引用  查看    
#3楼 [楼主] 2006-11-25 08:13 | Terry Deng      
@兰亭
采用WebResourceCompression的好处是压缩率更大了,压缩后封装Anthem.js的WebResource.axd只有5KB,而且除了压缩封装Anthem.js的WebResource.axd外,还可以压缩Asp.net页面默认所生成的客户端脚本,像Asp.net验证控件所生成的客户端脚本也被压缩到只有4KB左右!另外WebResourceCompression模块就是在asp.net ajax里精简提取出来的,所以兼容性是没有问题的,而且并不局限于Anthem.Net的使用,喜欢的话还可以将模块应用在其它ajax.net或普通的asp.net页面以便进行压缩客户端脚本之用!
  回复  引用  查看    
#4楼  2006-11-25 09:19 | 高海东      
这个优化不错 提高效率
  回复  引用  查看    
#5楼  2006-11-25 10:03 | Dflying Chen      
good!但是服务器端压缩是否也会占用服务器端资源呢?这些也是应该考虑的吧?
  回复  引用  查看    
#6楼 [楼主] 2006-11-25 10:16 | Terry Deng      
@Dflying Chen
占用的资源微不足道,而且这个压缩只会在客户端第一次浏览页面时执行,再次刷新后因为有缓存的关系就不会再执行压缩了,其实asp.net ajax默认就已经开启了这个压缩的,web.config中<add name="WebResourceCompression" type="Microsoft.Web.Services.WebResourceCompressionModule" />
这个就是开启压缩的定义,本文所用的到压缩模块就是从中提取的,所以asp.net ajax也一样会占用这些资源.
  回复  引用  查看    
#7楼 [楼主] 2006-11-25 10:38 | Terry Deng      
个人感觉牺牲一点资源,换来的是一个页面总计60多K的客户端脚本被压缩为不到15K还是物有所值,毕竟实际应用中一些图片多一点的页面很容易就体积过100K了,还再加载ajax所带来的脚本对页面显示速度还是有一定影响的,特别是现在大多数便宜的虚拟主机都会对访问带宽作些限制,客户端访问页面可能每秒只能接收几十K甚至更小的数量,这样降级几十KB的数量就意味着加快很多秒的页面显示速度.
  回复  引用  查看    
#8楼  2006-11-25 11:33 | neuhawk      
好~~~~~~~~~~~.
希望深入Anthem.NET
  回复  引用  查看    
#9楼  2006-11-25 11:42 | 蓝色身份[匿名] [未注册用户]
将WebResourceCompression.dll放在Anthem.NET项目的bin目录下,然后在web.config加入这一句
<httpModules>
<add name="WebResourceCompression" type="WebResourceCompression.WebResourceCompressionModule"/>
</httpModules>


页面还是没变化,我看了代码里一样没被压缩。怎么回事???
  回复  引用    
#10楼  2006-11-25 11:46 | 木野狐      
很不错的文章。
  回复  引用  查看    
#11楼 [楼主] 2006-11-25 12:01 | Terry Deng      
@蓝色身份[匿名]
压缩的不是页面,而是WebResource.axd文件,这些文件封装了实现ajax的客户端脚本,只有用Fiddler工具才能查看到具体接收数据的变化,即使将页面另存为后查看其生成WebResource.axd的文件大小也是没有变化的,因为文件在客户端已经被解压缩了。
  回复  引用  查看    
#12楼  2006-11-25 16:50 | 兰亭      
请问这个在.NET 2003下能用吗?
  回复  引用  查看    
#13楼 [楼主] 2006-11-25 22:48 | Terry Deng      
应该是可以的,但未在vs2003试验过
  回复  引用  查看    
#14楼  2006-11-26 01:53 | ahnan [未注册用户]
gzip压缩而已嘛。
  回复  引用    
#15楼  2006-11-29 15:16 | Anthan      
那如果我压缩了ViewState呢?
会有问题吗?
  回复  引用  查看    
#16楼  2006-11-29 17:50 | it饺子 [未注册用户]
WebResourceCompression.dll这个怎么加不近来啊
  回复  引用    
#17楼  2007-01-27 11:30 | 兰亭      
试了一下,在.NET 1.1环境中无法使用^o^
  回复  引用  查看    
#18楼  2007-05-15 18:28 | 兰亭      
在.NET 2.0环境中运行得很好,如果能压缩页面大小就更好啦
  回复  引用  查看    
#19楼  2007-07-23 10:51 | ms [未注册用户]
在本地(win2003)运行一切正常,页面上的控件可以postback调用服务端的方法,为什么发不到服务器上后就不postback了呢(win2003)
  回复  引用    
#20楼  2007-07-31 09:41 | lonewolf      
它只能压缩资源文件里的和asp.net生成的脚本,要是能压缩普通的脚本文件(如外部自己写的js文件)就好了
  回复  引用  查看    
#21楼  2007-07-31 09:54 | lonewolf      
ajaxpro.net里的脚本也不能压缩。
  回复  引用  查看    
#22楼  2007-08-01 16:19 | lonewolf      
我反编译后发觉他是gzip压缩的,现在的浏览器都支持这种压缩格式,我现在想把它的功能扩展一下,以便可以压缩外部的js文件,但在context.Handler.ProcessRequest(context2);这一句时总是抛出异常:必须使用 BeginProcessRequest 异步调用 DefaultHttpHandler。原因我上网查了一下都没有这方面的资料.js文件的context.Handler是DefaultHttpHandler,而axd请求则是其它的handler,后面我又反编译asp.net ajax发现里面并没有WebResourceCompressionModule这一模块,而是用ScriptResourceHandler来处理压缩脚本的问题,但我看得也不是太明白.请问Terry Deng可否指点我一下,不胜感激!!
  回复  引用  查看    
#24楼  2008-03-26 21:37 | John Kou [未注册用户]
很好,我一試就成功,本人是用IIS內建的GZip壓aspx及htm,另外再用樓主的dll檔再壓縮WebResource.axd,但本人發覺還有一個文件是ScriptResource.axd是沒有被壓縮,樓主請問問是否只針對WebResource.axd壓縮 ?? 如果想把*.axd壓縮,我要怎麼做 ??

如果把*.axd都壓縮就完美無缺了 !!!!!!!!!!!
  回复  引用    
#25楼  2008-08-02 13:44 | dikongpulu      
有个问题给你留言了 请查看
  回复  引用  查看    




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-12-02 17:09 编辑过
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接: