快速业务通道

ASP.NET 3.5企业级项目开发 第一章(续):企业级项目框架解决方案的提出

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
,它将访问数据库以及所需的任何其他资源以生成页面。之后, 该页面会在 Web 服务器的内存中保留 60 秒,在此期间对该页面的所有请求都将直接从内存中给出结果 。
遗憾的是,虽然本示例非常简单,但它忽略了页面缓存的基本实际情况:实际上,没有 ASP.NET 页面 可以达到如此的静态程度,以致于您可以将整个部分缓存任意长的时间。这样部分页面缓存便应运而生了 。有了部分页面缓存,您就可以将 ASP.NET 页面的某些部分标记为可以缓存,以便仅计算页面中定期更 改的部分。它看上去非常复杂,但却很有效率。

毋庸置疑,最强大(也最复杂)的缓存形式是编程缓存,它关注的是页面使用的对象。最常见的编程 缓存使用情形是存储从数据库检索的数据。

缓存数据所面临的常见问题是基础数据可能在您缓存后发生了改变。缓存过期是实施任何形式的缓存 时都不容回避的一个最大挑战。此外还要考虑内存问题。

在繁忙的 ASP.NET 服务器中,各种原因交汇使内存成为一个非常重要的环节。每次计算 ASP.NET 页 面时,它都会使用一些内存。Microsoft .NET Framework 被设置为分配内存时非常迅速而释放时却相对 缓慢(通过垃圾收集操作实现)。有关垃圾收集和 .NET 内存分配有专门的文章讨论,而且已经编写过多 次。但可以肯定的是,对于繁忙的 Web 服务器,为 ASP.NET 应用程序提供 2GB 内存空间是非常必要的 。理想情况下,其中的大部分内存使用量都是临时的,因为它是被分配给计算 Web 页面时所使用的各种 变量和结构的。

但对于永久内存对象(如进程中会话和缓存对象)而言,内存使用量所存在的问题要多很多。当然, 只有当应用程非常繁忙时,这些问题才会浮现出来。

请看下面的情况:您的 Web 站点推出了一些新的市场促销举措,有成千上万的用户点击该站点,您马 上就会赚得盆满钵满。为了保持良好的响应时间,您应尽可能缓存页面的某些部分和数据对象组。用户的 每个页面请求都会占用一些内存,因此消耗的内存量会持续向上增加。用户越多,增加速度就越快。缓存 和会话对象还会产生大的跳跃。

当内存使用总量接近 ASP.NET 默认缓存内存限制的 90% 时,系统会调用垃圾收集事件。垃圾收集器 将分析整个内存空间,移动永久内存对象(如缓存对象和会话对象)并释放不再使用的内存(用于计算 Web 页面的内存)。释放不再使用的内存会很快,但移动永久对象会很慢。因此,存在的永久对象越多, 垃圾收集器执行操作时就越困难。此类问题在 perform.exe 中可通过大量的第 2 代收集反映出来。

请回想一下,在进行垃圾收集时,该 ASP.NET 服务器将无法提供任何页面;所有内容都存放在队列中 ,等待垃圾收集进程完成。IIS 也在观察。如果它认为进程执行时间太长,可能已经挂起,它将回收工作 线程。虽然这会迅速释放大量内存,但由于所有永久内存对象均被抛出,因此有些客户可能会感到不快。

现在 ASP.NET 有了一个修补程序,如果内存变得不足,它将自动删除编程缓存中的对象,这听起来是 个不错的主意。因为总比系统崩溃要好。不过要注意,每次从缓存中删除了某些内容后,编码最终都会将 其恢复。

缓存某些内容时,这些内容可能会发生错误。例如,以小组件数据库和相应的订购页面为例。在最初 形式的小组件页面中,每次呈现该页面时都涉及一个数据库请求,即请求小组件在库存中的数量。如果您 分析这些请求,可能就会发现 99% 的时间您都在反复检索同一数量。那为什么不缓存它呢?

一种简单的缓存方式是按时间缓存。您可以将小组件库存缓存一小时。这种方法的缺点是某人购买了 某个小组件后,当他返回该页面时会发现库存没有任何变化。您可能会收到对此的抱怨。但更糟糕的是如 果某人想购买小组件而且发现它的确在库存中,但实际上它已被售出。您可以建立

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号