编写高性能 Web 应用程序的 10 个技巧
日期:2007年11月6日 作者: 查看:[大字体 中字体 小字体]-
每当应用程序连接资源时,如在另一个进程中运行的数据库,您都应该重点考虑连接该资源所花时间、发送或检索数据所花时间,以及往返的数量,从而进行优化。优化应用程序中任何种类的进程跳跃都是获得更佳性能的首要一点。
应用层包含了连接数据层、将数据转换为有意义类实例和业务流程的逻辑。例如社区服务器,您要在其中填充Forums 或 Threads集合,应用业务规则(如权限);最重要的是要在其中执行缓存逻辑。
返回页首
技巧 4 — ASP.NET 缓存 API
编写应用程序代码行之前,一个首要完成的操作是设计应用层的结构,以便最大化利用 ASP.NET 缓存功能。
如果您的组件要在 ASP.NET 应用程序中运行,则只需在该应用程序项目中包括一个 System.Web.dll 引用。当您需要访问该缓存时,请使用 HttpRuntime.Cache 属性(通过 Page.Cache 和 HttpContext.Cache 也可访问这个对象)。
对于缓存数据,有几个规则。首先,如果数据可能会多次使用时,则这是使用缓存的一个很好的备选情况。第二,如果数据是通用的,而不特定于某个具体的请求或用户时,则也是使用缓存的一个很好的备选情况。如果数据是特定于用户或请求的,但是寿命较长的话,仍然可以对其进行缓存,但是这种情况可能并不经常使用。第三,一个经常被忽略的规则是,有时可能您缓存得太多。通常在一个 x86 计算机上,为了减少内存不足错误出现的机会,您会想使用不高于 800MB 的专用字节运行进程。因此缓存应该有个限度。换句话说,您可能能够重用某个计算结果,但是如果该计算采用 10 个参数的话,您可能要尝试缓存 10 个排列,这样有可能给您带来麻烦。一个要求 ASP.NET 的最常见支持是由于过度缓存引起的内存不足错误,尤其是对于大型数据集。
图 3 ASP.NET缓存
缓存有几个极佳的功能,您需要对它们有所了解。首先,缓存会实现最近最少使用的算法,使得 ASP.NET 能够在内存运行效率较低的情况下强制缓存清除 - 从缓存自动删除未使用过的项目。第二,缓存支持可以强制失效的过期依赖项。这些依赖项包括时间、密钥和文件。时间经常会用到,但是对于 ASP.NET 2.0,引入了一个功能更强的新失效类型:数据库缓存失效。它指的是当数据库中的数据发生变化时自动删除缓存中的项。有关数据库缓存失效的详细信息,请参阅 MSDN?Magazine 2004 年 7 月的 Dino Esposito Cutting Edge 专栏。要了解缓存的体系结构,请参阅图 3。
返回页首
技巧 5 — 每请求缓存
在本文前面部分,我提到了经常遍历代码路径的一些小改善可能会导致较大的整体性能收益。对于这些小改善,其中有一个绝对是我的最爱,我将其称之为“每请求缓存”。
缓存 API 的设计目的是为了将数据缓存较长的一段时间,或者缓存至满足某些条件时,但每请求缓存则意味着只将数据缓存为该请求的持续时间。对于每个请求,要经常访问某个特定的代码路径,但是数据却只需提取、应用、修改或更新一次。这听起来有些理论化,那么我们来举一个具体的示例。
在社区服务器的论坛应用程序中,页面上使用的每个服务器控件都需要个性化的数据来确定使用什么外观、使用什么样式表,以及其他个性化数据。这些数据中有些可以长期缓存,但是有些数据却只针对每个请求提取一次,然后在执行该请求期间对其重用多次,如要用于控件的外观。
为了达到每请求缓存,请使用 ASP.NET HttpContext。对于每个请求,都会创建一个 HttpContext 实例,在该请求期间从 HttpContext.Current 属性的任何位置都可访问该实例。该 HttpContext 类具有一个特殊的 Items 集合属性;添加到此 Items 集合的对象和数据只在该请求持续期间内进行缓存。正如您可以使用缓存来存储经常访问的数据一样,您也可以使用 HttpContext.Items 来存储只基于每个请求使用的数据。它背后的逻辑非常简单:数据在它不存在的时候添加到 HttpContext.Items 集合,在后来的查找中,只是返回 HttpContext.Items 中的数据。 - 上一页 [1] [2] [3] [4] [5] [6] 下一页
-
- 编写高性能 Web 应用程序的 10 个技巧 相关文章:
- ·Java编写的计算器程序及源代码(1)
- ·C#编写的windows计算器-源代码
- ·Windows下C语言网络编程快速入门
- ·VBA编程简化Excel操作的两个实例
- ·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
- ·Windows编程基础 - 概述
- ·深入浅出.NET泛型编程
- ·WINDOWS编程基础
- ·linux内核编译详解
- ·剪辑数字影像 影像编辑软件大荟萃
- 编写高性能 Web 应用程序的 10 个技巧 相关软件
- ·C语言编程宝典之一
- ·《雅奇MIS》可视化自动编程系统 V10.0
- ·MathType 数学公式编辑器 V5.2 汉化版
- ·delphi编程手册 V3.0
- ·Lrc歌词编辑器2006 V12.26
- ·Autop+线切割编程系统 V4.47
- ·vc-mfc编程实例
- ·姑妄言汇编
- ·ICO图标提取编辑专家 V4.7
- ·JP-Word简谱编辑 V3.0
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:四篇IIS的中级技巧
下一篇:中国是谁的天堂?一个牛人的牛话
精品推荐
热点TOP10
- ·1394网络适配器是什么东西?
- ·知道对方的ip地址,如何查具体物理地址?
- ·arp.exe是什么
- ·XSL/XML网页制作入门,入门到精通
- ·素材网站、优秀设计素材大全
- ·初学者入门:如何学习网页制作?
- ·jsp Smart Upload上传下载全攻略
- ·常用网页使用js技巧收集(200多个)
- ·WINDOWS编程基础
- ·为什么打开网页那么慢?
- ·请问如何查出我被人限制网速~~~
- ·常见弹出代码集合
- ·制作网站的步骤和方法
- ·网页版面设计
- ·站长常用广告代码的表达大全(不断更新中,希望收藏本页)
- ·网页对联广告代码大全
- ·ADSL登录是错误,出现691是什么意思
- ·手把手教你做网站必备的六步
- ·怎么样才能访问到局域网其他的机器
- ·求一款免费制造网页的软件!
特别推荐
- ·常见弹出代码集合
- ·国内外cms网站大全
- ·CSDN 总结 精华 ASP 代码
- ·编写高性能 Web 应用程序的 10 个技巧
- ·制作网页需要学习哪些技术?
- ·再次举例熟悉网页的头部信息表示涵义
- ·英文版本的cms大全
- ·ASP.NET中应用XML技术实现Web报表打印
- ·web标准常见问题大集合
- ·mssql数据库操作手册-全是精髓
- ·怎么让网页插入FLASH居中显示啊?代码!
- ·推荐FTP软件LeapFTP使用教程
- ·ADSL登录是错误,出现691是什么意思
- ·初学者入门:如何学习网页制作?
- ·ADSL宽带LINK灯闪
- ·jsp Smart Upload上传下载全攻略
- ·怎么样才能访问到局域网其他的机器
- ·服务器安装Zend Optimizer的方法
- ·信了你的邪-阿彪就能装上iis组件
- ·手把手教你做网站必备的六步
