在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言 本文是我对ASP.NET页面载入速度提高的一些做法,这些做法分为以下部分: 目录 1.采用 HTTP Module 控制页面的生命周期。 2.自定义Response.Filter得到输出流stream生成动态页面的静态内容(磁盘缓存)。 3.页面GZIP压缩。 4.OutputCache 编程方式输出页面缓存。 5.删除页面空白字符串。(类似Google) 6.完全删除ViewState。 7.删除服务器控件生成的垃圾NamingContainer。 8.使用计划任务按时生成页面。(本文不包含该做法的实现) 9.JS,CSS压缩、合并、缓存,图片缓存。(限于文章篇幅,本文不包含该做法的实现) 10.缓存破坏。(不包含第9做法的实现) 针对上述做法,我们首先需要一个 HTTP 模块,它是整个页面流程的入口和核心。 一、自定义Response.Filter得到输出流stream生成动态页面的静态内容(磁盘缓存) 如下的代码我们可以看出,我们以 request.RawUrl 为缓存基础,因为它可以包含任意的QueryString变量,然后我们用MD5加密RawUrl 得到服务器本地文件名的变量,再实例化一个FileInfo操作该文件,如果文件最后一次生成时间小于7天,我们就使用.Net2.0新增的TransmitFile方法将存储文件的静态内容发送到浏览器。如果文件不存在,我们就操作 response.Filter 得到的 Stream 传递给 CommonFilter 类,并利用FileStream写入动态页面的内容到静态文件中。
二、页面GZIP压缩 对页面GZIP压缩几乎是每篇讲解高性能WEB程序的几大做法之一,因为使用GZIP压缩可以降低服务器发送的字节数,能让客户感觉到网页的速度更快也减少了对带宽的使用情况。当然,这里也存在客户端的浏览器是否支持它。因此,我们要做的是,如果客户端支持GZIP,我们就发送GZIP压缩过的内容,如果不支持,我们直接发送静态文件的内容。幸运的是,现代浏览器IE6.7.8.0,火狐等都支持GZIP。 为了实现这个功能,我们需要改写上面的 Application_BeginRequest 事件:
三、OutputCache 编程方式输出页面缓存 ASP.NET内置的 OutputCache 缓存可以将内容缓存在三个地方:Web服务器、代理服务器和浏览器。当用户访问一个被设置为 OutputCache的页面时,ASP.NET在MSIL之后,先将结果写入output cache缓存,然后在发送到浏览器,当用户访问同一路径的页面时,ASP.NET将直接发送被Cache的内容,而不经过.aspx编译以及执行MSIL的过程,所以,虽然程序的本身效率没有提升,但是页面载入速度却得到了提升。 为了实现这个功能,我们继续改写上面的 Application_BeginRequest 事件,我们在 TransmitFile 后,将这个路径的页面以OutputCache编程的方式缓存起来:
四、实现CommonFilter类过滤ViewState、过滤NamingContainer、空白字符串,以及生成磁盘的缓存文件 我们传入response.Filter的Stream对象给CommonFilter类: 首先,我们用先Stream的Write方法实现生成磁盘的缓存文件,代码如下,在这些代码中,只有初始化构造函数,Write方法,Close方式是有用的,其中FileStream字段是生成静态文件的操作对象:
然后我们利用正则完全删除ViewState:
以下是删除页面空白的方法:
全部评论
专题导读
上一篇:Whose Online in ASP.NET 2.0发布时间:2022-07-10下一篇:浅淡 iOS ,android,Asp.Net 关于MVC,MVP,MVVM的总结和思考发布时间:2022-07-10热门推荐
热门话题
阅读排行榜
|
请发表评论