缓存应用程序页面和数据

    利用缓存,可以极大改善Web应用程序的性能。
一.缓存概述
    ASP.NET2.0 Framework支持下面类型的缓存:
l         页面输出缓存
l         局部页面缓存
l         数据源缓存
l         数据缓存
二.使用页面输出缓存
    当一个页面被缓存时,被请求的页面内容并不会每次都重新生成,该页面对应到的.net类也不会执行。
    以下代码设置页面缓存60秒:
<%@OutputCache Duration="60" VaryByParam="none" %>
    需要注意的是,页面并不绝对保证会缓存到我们指定的时间。当服务器内存资源不足时,缓存项会自动从缓存中移除。
1.使用参数改变输出缓存
    VaryByParam属性。
<%@OutputCache Duration="60" VaryByParam="firstName" %>
<%@OutputCache Duration="60" VaryByParam="firstName;lastName" %>
    可以给VaryByParam属性赋两个特殊的值:
l         None:导致所有的QueryString和表单参数被忽略。只有一个版本的页面缓存;
l         *:导致传递到页面的QueryString或表单参数的任意变化都会创建一个新版本的页面缓存。
2.基于控件变化的输出缓存
    VaryByControl属性
<%@OutputCache Duration="60" VaryByControl="ddlCategory"%>
上面的“ddlCategory”是页面中一个下拉列表框控件的ID。
3.基于头变化的输出缓存
    VaryByHeader属性
<%@OutputCache Duration="60" VaryByHeader="User-Agent"%>
    不推荐使用VaryByHeader属性。因为User-Agent头有任何变化(比如浏览器的主次版本号、操作系统、SP版本号、.Net Framework版本号等)都会导致创建新的页面缓存版本。
4.基于浏览器变化的输出缓存
    VaryByCustom属性
<%@OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser"%>
    VaryByCustom属性接收一个特殊的“browser”值。这样浏览器的参数中只有两个被认为是重要并需要考虑的:浏览器类型和它的主版本号。
5.创建页面输出缓存文件依赖
    可以在一个缓存页面和磁盘上的一个文件或一组文件之间创建一个依赖。当文件被修改后,缓存页面自动失效并在下次页面请求时重新生成。
protected void Page_Load(object sender, EventArgs e)
{
Response.AddFileDependency(MapPath("Category.xml"));
}
6.使用编程方式设置页面输出缓存过期
    可以使用Response.RemoveOutputCacheItem()方法,以编程的方式,从缓存中移除一个页面。
    例如,一个页面(ShowCategory.aspx)用于显示所有的类别信息,一个页面(AddCategory.aspx)用于添加类别信息。此时,我们希望将以编程的方式,在类别表更新时移除第一个页面的缓存。
    以下是AddCategory.aspx.cs中的部分代码:
protected void btnAddCategory_Click(object sender, EventArgs e)
{
//往数据库中添加类别信息
HttpResponse.RemoveOutputCacheItem(
Page.ResolveUrl("~/ShowCategory.aspx"));
Response.Redirect("~/ShowCategory.aspx");
}
7.创建页面输出缓存配置
    除了为应用程序的每个页面设置页面输出缓存,也可以在Web配置文件中配置页面输出缓存,从而将这些设置应用到多个页面,使网站更易于管理。
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<addname="myCacheProfile"duration="3600"
varyByParam="none"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
ShowCategory.aspx:
<%@OutputCache CacheProfile="myCacheProfile"%>
三.使用部分页面缓存
    部分页面缓存在页面既包含动态内容又包含静态内容时才有意义。
    有两种方式可以实现部分页面缓存:缓存后替换和用户控件。
1.使用缓存后替换 
(1)使用声明方式
    需要用到Substitution控件
    Default.aspx.cs:
public static string GetDateTime(HttpContext context)
{
return DateTime.Now.ToString();
}
    Default.aspx:
<asp:Substitution ID="Substitution1" runat="server"
MethodName="GetDateTime"/>
(2)使用编程方式
    不需要使用Substitution控件
    Default.aspx.cs:
public static string GetUserName(HttpContext context)
{
return context.User.Identity.Name;
}
    Default.aspx:
<%Response.WriteSubstitution(GetUserName); %>
    注意:Substitution控件的MethodName属性所指定的方法,必须是静态方法。
2.用户控件缓存
    缓存后替换只在处理字符串文本时比较合适。如果需要处理更复杂的部分页面缓存,则应该利用用户控件。
    将没有缓存的用户控件拖放到缓存了的页面后,该用户控件也自动缓存,这时只能用SUBSTITUTION控件了
    要想在没有缓存的页面上部分缓存就可以用用户控件,只要在该用户控件上设置缓存就可以了
3.共享用户控件的输出缓存
    ucSharedCategory.ascx:
<%@Control Language="C#" AutoEventWireup="true"
CodeFile="ucSharedCategory.ascx.cs"
Inherits="ucSharedCategory" %>
<%@OutputCache Duration="60" VaryByParam="none"
Shared="true"%>

转载于:https://blog.51cto.com/zhangleiy/367858

ASP.NET -- 缓存技术(1)相关推荐

  1. ASP.NET 缓存技术(一)——启用页面输出缓存

    作者寄语:MSDN 是最好的老师,互联网是最智慧的生命体,分享是最重要的成长途径,技术的进步在于学习.实践和创新! 本系列所讲述的技术和展示的代码适用于 .NET Framework 4.0 和 II ...

  2. ASP.NET 缓存技术分析

    缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓 存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以 ...

  3. 浅谈ASP.NET 缓存技术

    缓存是指系统或应用程序将频繁使用的数据保存到内存中,当系统或应用程序再次使用时,能构快速的获取数据.它的弊端在于显示的内容可能不是最新,最精确的.ASP.Net 缓存主要分为两大类: 网页输出缓存和应 ...

  4. 简易ASP文件缓存技术

    注意:系统需要FSO权限.XMLHTTP权限 系统包括两个文件,其实可以合并为一个.之所以分为两个是因为部分杀毒软件会因为里边含有FSO.XMLHTTP操作而被认为是脚本木马. 调用时,需要在ASP页 ...

  5. ASP.NE的缓存技术提高Web站点的性能

    一:我们为什么要使用缓存? 先来理解一下asp.net缓存技术的基本原理:把访问频繁的数据以及需要花大量的时间来加载的数据缓存在内存中,那么用户在下次请求同样的数据时,直接将内存中的数据返回给用户,从 ...

  6. 浅谈缓存技术在ASP.NET中的运用

    本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过, 你只需关心Cache即可,具体的架构, ...

  7. 【精华】Asp优化之缓存技术

    一.何谓ASP缓存/为什么要缓存 当你的web站点采用asp技术建立的初期,可能感觉到的是asp动态网页技术带来的便利性,以及随意修改性.自如的http控制.但是,随着访问量的增加,你一定会发现自己的 ...

  8. ASP缓存技术(转)

    使用ASP中的缓存技术可以很大程度上提高你的网站性能,其实这些实现方法是非常的简单,它将说明如何在服务器上的缓存是如何工作以及你如何使用一种被称为断开连接的ADO连接技术. 在介绍这些技术之前先说明一 ...

  9. [转]ASP.Net缓存总结

    ASP.Net缓存总结 Asp.net 缓存技术总结 2008-04-01 17:29 提高性能最好最快的办法当然是通过缓存来改善,对于任何一个web开发者都应该善用缓存.Asp.net下的缓存机制十 ...

最新文章

  1. python可以实现哪些功能_Python学习究竟有多强大,Python代码能实现哪些功能
  2. javaone_JavaOne 2012 – 2400小时! 一些建议
  3. 软件项目周报模板_一份高质量的职场工作周报,要这样写
  4. P1616 疯狂的采药(python3实现)--80分
  5. linux+分离线程+退出,Linux下线程终止操作.pdf
  6. QT5开发及实例学习之十九图形视图体系结构
  7. python 自动下载文件_【Py大法系列--03】Python如何自动下载文件
  8. 响应优先级与zorder
  9. matlab官方中文网站
  10. React JsBarcode使用
  11. [软件测试]QQ表情收藏测试用例
  12. QEMU monitor使用
  13. STM32U5,意法半导体新打造的超低功耗MCU旗舰版
  14. http://jackwang1.blog.163.com/blog/static/39534478201182651610201/
  15. 添加打印机怎样锁定计算机名称,怎么安装打印机?_百度经验
  16. C# CSV文件读写
  17. 《用莫比乌斯带巧解内接矩形问题:拓扑学的用处》学习笔记
  18. 华为设备Ping命令
  19. Geogebra的使用
  20. 我的世界 1.12.2 Idea 开发包构建教程

热门文章

  1. python库tqdm是什么以及怎么用tqdm、trange和tqdm.notebook
  2. 神经网络通过研究任意单个星系,揭示整个宇宙的组成
  3. AlphaFold证明人工智能可以解决基本的科学问题
  4. AIoT成功的关键要素
  5. 报告|机器人行业深度报告:机器人产业价值与回报相关度分析
  6. 影响国家安全的四项新兴技术
  7. 打破国外垄断,我国拿下一项“制芯”关键技术
  8. 谷歌公布72位量子比特处理器,吹响量子霸权冲锋号
  9. 如何用一句话证明你是程序员?41 个答案揭晓!
  10. web.xml 里context-param 、listener、 filter、servlet 加载顺序