ASP.NET数据缓存之数据缓存浅谈

  ASP.NET数据缓存的学习是如何呢?如何使用ASP.NET数据缓存呢?在讲ASP.NET数据缓存之前还要先说一下如果在页面中使用参数缓存。前面讲过一个缓存设置VaryByParam="none"为无参数,我们也可以对VaryByParam进行设置,设置的参数与随 GET 方法属性发送的查询字符串值对应,或与使用 POST 方法发送的参数对应。将该属性设置为多个参数时,对于每个指定参数组合,输出缓存都包含一个不同版本的请求文档。可能的值包括 none、星号 (*) 以及任何有效的查询字符串或 POST 参数名称。简单点说,就是设置成我们在页面中使用的QueryString名称,看个例子:

%@
Page Language="C#" AutoEventWireup="true" CodeFile="date.
aspx.cs" Inherits="date" %

%@ OutputCache Duration="60" VaryByParam="CustomerID" %

!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"

titleASP.NET数据缓存/title

/head

body

form id="form1" runat="server"

div

  asp:GridView ID="GridView1" runat="server" BackColor="LightGoldenrodYellow"

BorderColor="Tan" BorderW
idth="1px" CellPadding="2" ForeColor="Black" GridLines="
None"

FooterStyle BackColor="Tan" /

SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" /

PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" /

HeaderStyle BackColor="Tan" Font-Bold="True" /

AlternatingRowStyle BackColor="PaleGoldenrod" /

/asp:GridView

 br /

br /

asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/date.aspx?CustomerID=16"16/asp:HyperLink

asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="~/date.aspx?CustomerID=19"19/asp:HyperLink

/div

/form

/body

/htmlprotected void Page_Load(object sender, EventArgs e)

{

string conn, comm, id;

if (Request.QueryString["CustomerID"] == null)

{

id = "16";

}

else

{

id = Request.QueryString["CustomerID"];

}

conn = "Server=WEB\SQLEXPRESS;Uid=moon;Pwd=1qaz2wsx;Database=store";

comm = "SELECT * FROM orders WHERE CustomerID =" + id;

SqlData
Adapter da = new SqlDataAdapter(comm, conn);

DataSet ds = new DataSet();

da.Fill(ds);

GridView1.DataSource = ds.Tables[0];

GridView1.DataBind();

Response.Write(DateTime.Now.ToString());

}

  运行后分别点击16和19会根据这两个关键字SELECT出不同的数据,这时候根据我们传递的两个参数会分别建立两个缓存页,在每点击一个关键字后请记住显示的时间,再反复刷新看看时间有什么变化!好了接下来讲一下数据缓存。

  ASP.NET数据缓存(Data Caching)

  在System.Web.Caching空间里有一个类“Cache”我们可以通过这个类对数据进行缓存。

  最简单的缓存方法:Cache["MyCacheString"] = "My CSDN BLOG!!!"; 通过赋值的形式建立一个缓存,再通过赋值的形式取出缓存:myLabel.Text = Cache["MyCacheString"].ToString();这种方法使用非常的简单可是功能上受到了一些限制,为了更完善的订制缓存,应该使用Cache.Insert()方法,下面举个例子:

  页面里只需要放一下GridView就可以了

using System;

using System.Web.Caching;

using System.Data;

using System.Data.Sql
Client;

using System.Configuration;

using System.
Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class DataCache : System.Web.UI.Page

{

DataView dv;//先声明一个数据视图用来存放数据库里的数据表

protected void Page_Load(object sender, EventArgs e)

{

dv = (DataView)Cache["ds"];//从ASP.NET数据缓存中读取数据表

if (dv == null)//如果缓存是空的,就建立数据库连接,从数据库里读数据

{

string conn, comm;

conn = "Server=WEB\SQLEXPRESS;Uid=moon;Pwd=1qaz2wsx;Database=store";

comm = "SELECT * FROM orders";

SqlDataAdapter da = new SqlDataAdapter(comm, conn);

DataSet ds = new DataSet();

da.Fill(ds);

dv = ds.Tables[0].DefaultView;

//下面这句是关键,具体参数后面介绍

Cache.Insert("ds", dv, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(3));

Databind();

Label1.Text = DateTime.Now.ToString();//参考用的时间,可有可无

}

else

{

Databind();

Response.Write("Is Cache Data!!!");//此句可有可无

}

}

protected void Databind()//自定义的数据绑定方法

{

GridView1.DataSource = dv;

GridView1.DataBind();

}

}

ASP.NET数据缓存参数说明

  Cache.Insert (String, Object, CacheDependency, DateTime, TimeSpan) 1是缓存的名称,2是缓存的数据对象,3是缓存键依赖项,通常为Null,4是过期时间,如果使用相对过期时间则设为NoAbsoluteExpiration,5是可调过期时间,如果参数4使用了固定过期时间,则此参数要设成NoSlidingExpiration。呵呵是不是看的有点晕啊,举两个具体例子说一下过期时间的问题

Cache.Insert("ds", dv, null,DateTime.Now.AddMinutes(5) , System.Web.Caching.Cache.NoSlidingExpiration);
在这个例子里当缓存建立后过5分钟就过期。
Cache.Insert("ds", dv, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5));

这个例子里缓存建立后,过期时间为可调,比如1:20秒建立的缓存过期时间应该是6:20但如果在3:20有人访问了缓存,则过期时间将调整为8:20,以此类推……

我们在VS2005里建立一个测试看看使用缓存前和使用缓存后的性能变化吧!看到没有,没有缓存前用了0.43秒而使用缓存后只用了0.08秒性能相差5倍多啊!!!

ASP.NET数据缓存的相关内容就向你介绍到这里,希望对你了解和学习ASP.NET数据缓存有所帮助。

时间: 2024-09-09 17:19:07

ASP.NET数据缓存之数据缓存浅谈的相关文章

[转载]数据层的多租户浅谈

原文:http://www.ibm.com/developerworks/cn/java/j-lo-dataMultitenant/index.html   在上一篇"浅析多租户在 Java 平台和某些 PaaS 上的实现"中我们谈到了应用层面的多租户架构,涉及到 PaaS.JVM.OS 等,与之相应的是数据层也有多租户的支持. 数据层的多租户综述 多租户(Multi Tenancy/Tenant)是一种软件架构,其定义是: 在一台服务器上运行单个应用实例,它为多个租户提供服务. 在S

Java平台数据层的多租户浅谈

在上一篇"浅析多租户在 Java 平台和某些 http://www.aliyun.com/zixun/aggregation/16038.html">PaaS 上的实现"中我们谈到了应用层面的多租户架构,涉及到 PaaS.JVM.OS 等,与之相应的是数据层也有多租户的支持. 数据层的多租户综述 多租户(Multi Tenancy/Tenant)是一种软件架构,其定义是: 在一台服务器上运行单个应用实例,它为多个租户提供服务. 在SaaS实施过程中,有一个显著的考量点,

memcache-Memcache缓存重复数据疑问

问题描述 Memcache缓存重复数据疑问 在应用Memcache时,我发现一个问题.因为我要通过键值对的形式把数据存入缓存中,而键的类型只能为String.以查找Student数据为例,考虑以下情况: 未使用Memcache时:我所有查找数据的参数基本都是Student类型,前台给了我一个id,我会先新建一个Student类,然后student.setId(id),把这个id存入student类中,然后StudentMapper.findById(Studnet student);这样就能返回

艾伟_转载:ASP.NET数据缓存之数据缓存浅谈

ASP.NET数据缓存的学习是如何呢?如何使用ASP.NET数据缓存呢?在讲ASP.NET数据缓存之前还要先说一下如果在页面中使用参数缓存.前面讲过一个缓存设置VaryByParam="none"为无参数,我们也可以对VaryByParam进行设置,设置的参数与随 GET 方法属性发送的查询字符串值对应,或与使用 POST 方法发送的参数对应.将该属性设置为多个参数时,对于每个指定参数组合,输出缓存都包含一个不同版本的请求文档.可能的值包括 none.星号 (*) 以及任何有效的查询字

为ASP.NET应用缓存Oracle数据

asp.net|oracle|缓存|数据 为了创建可扩展.高性能的基于WEB的应用,ASP.NET提供一个称为数据缓存(Data Caching)的特性.数据缓存支持将频繁访问的数据对象可编程地存放在内存中.这一特性可扩展以广泛地提高查询Oracle数据库中数据的ASP.NET应用的性能.本文讲述一个策略,可用于采用Web Farm环境中的ASP.NET Web应用缓存Oracle数据库数据.这个技巧允许在内存中缓存频繁访问的Oracle数据库数据,而不是频繁访问数据库来取数据.这可以帮助避免到

浅谈公司核心业务数据表的重构——结合Memcache分析缓存策略与系统数据交互

 接着上一篇的预告,本文将结合本人近来的一些思考,谈谈对于企业核心业务数据的重构,配合Memcached构思对现有架构上的一些改造.本文观点纯属一家之言,可能受制于眼界之窄,业务之浅,欢迎各位共同探讨,也欢迎拍砖! Background 公司从事GPRS车载终端产品的研发.作为配合,软件这块主要开发车辆管理信息系统,以提供对装有终端车辆的全面服务. 说到这里,我想大家应该明白,这里最核心的就是--车辆.大部分的功能几乎都是围绕着车辆在展开.给购买车机终端的厂家,提供对车辆的有效管理和控制,是系统

浅谈Android轻量级的数据缓存框架RxCache

请求网络数据是在安卓开发中使用最频繁的一个功能,网络请求的体验决定了用户对整个APP的感觉,因此合理地使用缓存对网络请求的数据进行处理极为重要.合理的进行缓存和网络请求,可以为APP带来更优秀的体验.图片的缓存有Picasso.Glide.Fresco等非常著名的框架,它们极为成熟并且使用广泛,程序员应该做的是使用轮子而非重复造轮子.但对于网络数据的缓存,大多都是自用自封装,每个人都需要进行繁琐的编码工作.RxCache就对网络缓存进行了封装,并采用RxJava模式,可以与其他RxJava的代码

php 数据库缓存:php文件缓存数据

 在做网吧看看的时候,由于页面中存在电影的搜索功能(用户输入)这个功能由于不能够做成静态化,那么就只能够动态,用动态的时候会对数据库,服务器压力带来很大的考验所以就只能用到缓存数据的方式了数据缓存的形式包括:1.将数据缓存到内存,相信大家这个就会想到了Memcached.memcached是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度. 提高可扩展性.2.用文件来缓存数据.将数据保存到文件中,用key=>value的形式

浅谈ASP中Request对象获取客户端数据的顺序

request|对象|客户端|数据 浅谈ASP中Request对象获取客户端数据的顺序 /**描述:在使用ASP Request对象时需要注意的小问题作者:慈勤强Email : cqq1978@yeah.net**/ 在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了.虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写?strMessage = Request("msg")strMessage = Request.Form(&qu