ASP.NET 缓存:方法和最佳实践
ASP.NET 缓存:方法和最佳实践
2009-11-28 16:49
摘要:ASP.NET 提供三种主要形式的缓存:页面级输出缓存、用户控件级输出缓存(或称为片段缓存)和缓存 API。输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用这两种缓存就足够了。而缓存 API 则提供了额外的灵活性(实际上是相当大的灵活性),可用于在应用程序的每一层利用缓存。
Steven A. Smith ASPAlliance.com
2003 年 8 月
适用于: Microsoft? ASP.NET
请下载 CacheDemos.msi。
本页内容
Steve 的缓存提示
页面级输出缓存
片段缓存,用户控件输出缓存
缓存 API,使用 Cache 对象
小结
在 ASP.NET 提供的许多特性中,缓存支持无疑是我最欣赏的特性,我这样说当然是有充分理由的。相比 ASP.NET 的所有其他特性,缓存对应用程序的性能具有最大的潜在影响,利用缓存和其他机制,ASP.NET 开发人员可以接受使用开销很大的控件(例如,DataGrid)构建站点时的额外开销,而不必担心性能会受到太大的影响。为了在应用程序中最大程度地利用缓存,您应该考虑在所有程序级别上都实现缓存的方法。
Steve 的缓存提示
尽早缓存;经常缓存
您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI 或输出层添加缓存支持。内存现在非常便宜 — 因此,通过以智能的方式在整个应用程序中实现缓存,可以获得很大的性能提高。
缓存可以掩盖许多过失
缓存是一种无需大量时间和分析就可以获得“足够良好的”性能的方法。这里再次强调,内存现在非常便宜,因此,如果您能通过将输出缓存 30 秒,而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能,您肯定会选择缓存解决方案(假设可以接受 30 秒的旧数据)。缓存正是那些利用 20% 付出获得 80% 回报的特性之一,因此,要提高性能,应该首先想到缓存。不过,如果设计很糟糕,最终却有可能带来不良的后果,因此,您当然也应该尽量正确地设计应用程序。但如果您只是需要立即获得足够高的性能,缓存就是您的最佳选择,您可以在以后有时间的时候再尽快重新设计应用程序。
返回页首
页面级输出缓存
作为最简单的缓存形式,输出缓存只是在内存中保留为响应请求而发送的 HTML 的副本。其后再有请求时将提供缓存的输出,直到缓存到期,这样,性能有可能得到很大的提高(取决于需要多少开销来创建原始页面输出 - 发送缓存的输出总是很快,并且比较稳定)。
实现
要实现页面输出缓存
相关文档:
using System.Web.Mail ;
private void Button1_Click(object sender, System.EventArgs e)
{
//实例化MailMessage对象
System.Web.Mail.MailMessage mail=new System.Web.Mail.MailMessage();
//定义邮件的发送地址 , 可以随便填一个不存在的地址 ......
ASP.NET清除页面缓存
(1) Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Res ......
ASP.NET对请求处理的过程
当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过http管道(Http PipeLine)将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,处理完毕将结果返回 ......
在ASP.NET页面中经常需要链入一些JS文件,如:
如果在JS里有中文的话,在一般情况下,在浏览器里会报错脚本错误.
如果不信可以自己试一试。
其实是这样的:
由VS.NET自动生成的项目里,Web.Config中有这么一段:
<
globalization
requestEncoding
="utf-8"
responseEncoding
=" ......