`
灵雨飘零
  • 浏览: 34976 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
文章分类
社区版块
存档分类
最新评论

浅谈ASP.NET 缓存技术

 
阅读更多

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

网页输出缓存针对ASP.NET Pages 页面中的HTML进行缓存,是可视化内容对象,如图片,GridView表格控件,用户控件等

应用程序缓存是针对应用程序内的数据缓存,如:将DataSet等数据存储到缓存

网页输出缓存:(ASP 2.0 框架以后所形成功能)

【注:页输出缓存可以分别为每个页配置缓存页缓存,也可以在Web.config文件中创建缓存配置文件】

一、完整页面缓存

完整页面缓存是指将已生成的动/静页面全部内容保存在服务器中

设置页的缓存可以使用一下两种方式:

【1】:使用<%@OutputCache…%>指令声明(高级)

要对一个网页Page假如60s 完整网页缓存可以在.aspx 网页中加入 一段指令声明。如下:

<%@ OutputCache Duration="60" VaryByParam="none"  %>

缓存展现示例:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%--设置整页缓存--%>
<%@ OutputCache Duration="10" VaryByParam="none"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>完整网页缓存</title> 
    <script runat="server"> 
        public void Page_Load(object sender, EventArgs e) 
        { 
            Response.Write("页面缓存设置示例:<br>设置缓存时间为十秒<br>当前时间:"+DateTime.Now.ToString()); 
        } 
        //由于缓存是不可视的 所以做在这里用一种形式展现出来 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
      
    </div> 
    </form> 
</body> 
</html>
【2】使用Response.Cache 的页面输出缓存API(低级)
以程序化API方式。要在后台代码中设置60s的网页缓存,示例代码如下:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); 


缓存展现示例:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%--使用参数缓存网页--%>
<%@ OutputCache Duration="10" VaryByParam="Test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>完整网页缓存</title>
    <script runat="server">
        void Page_Load(object sender, EventArgs e)
        {
            //设置缓存数据存储到服务器上
            Response.Cache.SetCacheability(HttpCacheability.Server);
            string str = Request.QueryString["Test"];
            if (str == null)
            {
                Response.Cache.SetNoServerCaching();
                Response.Write("没有设置缓存的时间为:" + DateTime.Now.ToString());
            }
            else
            {
                Response.Write("设置缓存的时间为:" + DateTime.Now.ToString());
            }
        }
        //由于缓存是不可视的 所以做在这里用一种形式展现出来
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default.aspx?Test=test" Text="缓存"></asp:HyperLink>
    </div>
    </form>
</body>
</html>

API 所运用的类型是HttpCachePolicy,HttpCachePolicy类方法如下:
方法 说明
SetAllowResponseInBrowserHistory 当allow参数为true时,将使响应在客户端浏览器“历史记录”缓存中可用,而不论服务器上所做的HttpCacheability设置是什么
SetCacheability 设置Cache-Control HTTP 标头。Cache-Control HTTP标头控制在网路上缓存文档的格式
SetExpires 该方法用于设置缓存过期的绝对时间
SetLastModified 用于设置网页的Last-Modified HTTP标头。Last-Modified HTTP标头表示页面上次修改时间,缓存将依靠它来进行
SetMaxAge 基于指定的时间跨度设置Cache-Control:max-age HTTP标头
SetNoServerCaching 停止当前响应的所有源服务器缓存
SetOmitVaryStar 指定再按参数进行区分时 ,响应是否应该包含ary:*标头
SetSlidingExpiration 将缓存过期从绝对事件设置为可调时间
SetVaryByCuston 指定一个自定义文本字符串,以此区别缓存的输出相应

页面部分缓存 :

页面部分缓存可采用两种工作方式: 控件缓存和缓存后替换

QQ截图20120510184319

二、控件缓存:

控件缓存有两种设置方式

【1】使用OutputCache指令

控件缓存的OutputCache指令设置在用户控件.ascx文件中,声明代码如下

    <%@ OutputCache Duration="60" VaryByParam="none" %>

缓存展现示例:

1 .新建一个网站在默认主页Default.aspx 中添加一个label控件并在HTML中添加每秒刷新的声明,通过每秒的更新来观察用户控件的部分网页缓存代码如下:

  <meta http-equiv="refresh" content="1; url= default.aspx"  />

2.在Default.aspx.cs文件中编写代码如下:

         protected void Page_Load(object sender, EventArgs e)
          {
            Label1.Text = "Web页面 当前系统时间:" + DateTime.Now.ToString();
          }

3 .在解决方案管理器上,右键单击项目名称,在弹出的快捷菜单中选择“添加新项”项,在打开的窗口中选择“web用户控件”

添加个用户控件。在.ascx 文件中添加Label控件,添加@OutputCache指令设置缓存代码如下:

<%@ OutputCache Duration="10" VaryByParam="none" %>

在.ascx.cs文件中编写与第二步同样的代码。

4.将Default.aspx切换到设计视图 从解决方案管理器中将定义的用户控件拖入到设计中。

【2】在代码隐藏文件中使用PartailCachingAttibute类

PartailCachingAttibute属性类标记用户控件(.ascx文件)

如以下示例代码是在用户控件的.ascx.cs 后台代码的开头加入缓存属性说明,主要用来设置用户空件的缓存时间为10s

……引入的命名空间

         [PartialCaching(10)]
         public partial class WebUserControl : System.Web.UI.UserControl
         {…}
      

缓存后替换:缓存后替换是Cache2.0新增的功能它和控件缓存刚好相反实现缓存后替换的方式有3种

              <1>使用Substitution控件,以声明的方式来实现;
              <2>使用Substitution控件,以程序化API方式来实现;
              <3>使用AdRotator控件,以AdRotator控件隐式实现。

缓存展现示例:.aspx 文件

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ OutputCache Duration="10" VaryByParam="none " %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <title>缓存后替换</title>
    <meta http-equiv="refresh" content="1; url= default.aspx"  />
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Substitution ID="Substitution1" runat="server" MethodName="GetNowTime" />
    </div>
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
          .aspx.cs 文件
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "页面被缓存,此时间10秒内不会发生变化:" + DateTime.Now.ToString();
    }
    //处理缓存后替换的方法GetNowTime() 此处必须是静态的方法
    public static string GetNowTime(HttpContext ctxt)
    {
        return "Substitution控件中的数据是动态变化的:" + DateTime.Now.ToString();
    }
}


应用程序数据缓存 :

应用程序数据缓存(即页面数据缓存)该缓存机制类似于Session ,优点是由ASP.NET 管理缓存会在项过期,无效或者内存不足时移出缓存项

分享到:
评论

相关推荐

    ASP.NET缓存技术源码及PPT完整版

    ASP.NET缓存技术源码及PPT ASP.NET缓存技术源码及PPT

    Asp.net 缓存技术总结

    Asp.net 缓存技术是提高Web应用性能的关键手段,尤其在处理大数据量或高并发访问的场景下,缓存的运用能显著提升页面访问速度。Asp.net 的缓存机制主要包括页面缓存,它通过OutputCache指令进行配置,允许开发者精细...

    ASP.NET缓存技术应用总结

    ASP.NET缓存技术是提升应用程序性能的关键手段,它通过存储常用数据或计算结果,避免了重复的数据库查询或计算,从而显著减少了响应时间。本文主要总结了ASP.NET中的各种缓存策略及其应用。 首先,我们要了解缓存的...

    ASP.net页面缓存技术

    ASP.net 页面缓存技术 输出缓存是 ASP.net 中的一种缓存技术,它允许开发者控制页面的缓存,以提高应用程序的性能。输出缓存可以将页面的输出缓存在客户端浏览器、代理服务器或 Web 服务器上,以便快速地将页面呈现...

    ASP.NET_缓存技术

    ASP.NET缓存技术是.NET框架下用于提升Web应用程序性能的关键特性。它允许开发者将常用数据存储在内存中,避免每次请求时都从数据库或其他慢速资源中获取数据,从而显著提高响应速度。本文将深入探讨ASP.NET缓存的...

    asp.net缓存技术

    ASP.NET 缓存技术是提升Web应用程序性能的关键手段,它通过存储常用数据和页面内容,减少对数据库和其他资源的访问,从而加快响应速度。在ASP.NET框架中,缓存主要分为三种类型:页面输出缓存、页面部分缓存和应用...

    概述ASP.NET缓存机制

    【ASP.NET 缓存机制详解】 ASP.NET 缓存机制是.NET框架下开发Web应用程序的重要特性,旨在提高系统性能,特别是对于数据库驱动的Web应用,缓存能够显著减少数据库查询和处理时间。缓存机制借鉴了硬件中的高速缓冲...

    asp.net缓存技术快速入门幻灯片

    ### ASP.NET 缓存技术快速入门知识点概览 #### 一、ASP.NET缓存技术概述 - **定义**:ASP.NET缓存技术是用于提高Web应用程序性能的一种手段,通过存储频繁访问的数据或计算结果,减少数据库查询次数,加快页面加载...

    asp.net缓存更新

    ASP.NET 缓存更新是提高Web应用程序性能的关键技术之一。在ASP.NET中,缓存机制允许开发者存储常用数据,减少对数据库或其他资源的访问,从而加快页面加载速度,减轻服务器负担。本文将深入探讨ASP.NET缓存管理及其...

    ASP.NET缓存技术.ppt

    ASP.NET 缓存技术是微软.NET框架下的一个重要组成部分,它主要用来提高Web应用程序的性能,减少不必要的计算和数据库查询,从而提升用户体验。缓存技术在ASP.NET中的应用主要有三种类型:页面级输出缓存、用户控件级...

    asp.net缓存应用实例

    ASP.NET 缓存技术是微软开发的Web应用程序框架ASP.NET中的一个重要特性,它主要用于提高网站性能,减少服务器与数据库之间的交互次数,降低响应时间。在标题提到的"asp.net缓存应用实例"中,我们可以看到一系列实用...

    【ASP.NET编程知识】浅谈ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的实现方法.docx

    浅谈 ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的实现方法 本文档对 ASP.NET MVC 中防止跨站请求伪造(CSRF)攻击的实现方法进行了详细的探讨。首先,文章介绍了 CSRF 攻击的定义和历史,然后通过一个模拟的示例,...

    Asp.Net缓存技术

    Asp.net 视频 缓存技术

    asp.net缓存(页面输出缓存和应用程序缓存)

    ASP.NET缓存技术是提升Web应用性能的关键策略之一,它主要分为页面输出缓存和应用程序缓存两大类。这两种缓存机制旨在减少服务器处理请求的时间,降低数据库负载,并且提高用户体验,通过存储已经生成的HTML页面或...

    ASP.NET Core 3.1中文教程.pdf

    本文档提供了 ASP.NET Core 3.1 的中文使用手册,涵盖了ASP.NET Core 的各种概念、技术和开发实践。 一、ASP.NET Core 概述 ASP.NET Core 是一款跨平台的 Web 应用程序框架,由 Microsoft 开发,允许开发者使用 C#...

    ASP.NET缓存的实现

    作为.Net框架下开发Web应用程序的主打产品,ASP.NET充分考虑了缓存机制。通过某种方法,将系统需要的数据对象、Web页面存储在内存中,使得Web站点在需要获取这些数据时,不需要经过繁琐的数据库连接、查询和复杂的...

Global site tag (gtag.js) - Google Analytics