ASP.NET编程技术-ASP.NET中使用Caching

原创 2005年02月28日 11:31:00
ASP.NET编程技术-ASP.NET中使用Caching

  Caching缓存,就是将一些生成代价比较大的常用数据,保存起来重用。一般数据都保存在内存中,因为从内存中读取数据比从数据库等其他地方要快。
  ASP.NET通过两种方式支持缓存:通过Cache API存储任意数据,通过页面输出缓存经常被访问的页面。让我们来看一个例子。
  一个电子商务的站点, 它的目录一般一周更新一次。站点提供了一套用户界面让客户订购产品。当一个客户浏览目录时,系统将通过网络去查询数据库,进行各种计算,最后返回结果。
  从服务器查询这些目录数据的操作是很频繁的。我们知道,这些数据一周才变化一次。所以以下的几种操作将带来性能上的损失。
1. 执行ASP.NET的程序生成对数据库的查询语句。
2. 通过网络,和数据库服务器进行通讯。
3. 数据库服务器编译执行查询(或是执行储存过程)。
  缓存机制可以减少许多这样的工作,提高应用的性能和伸缩性。我们能缓存结果以便能静态的处理客户请求,来提高性能。同时,由于减少了处理每个请求使用的资源,因此也提高了系统的伸缩性。
  Cache API对于ASP开发人员来说,把常用的数据保存在内存里,并不是一个全新的概念。在ASP里,有两个对象完成它。
 Session 对象
 Application 对象
  Session用来保存单个用户在多个请求间共享的数据,虽然在ASP.NET中有一些小的改动,但这些改动主要是在应用级的,对Session对象来说,仍然是一个保存键与键值对的集合。Application对象在ASP.NET也被保存下来了,同样是键与键值对的集合。在ASP和ASP.NET中,我们都可以使用以下代码来操作Application 对象


 
 
 Application("SomeInterestingData") = "Example data"
Response.Write(Application("SomeInterestingData") 
我们可以使用同样的方法访问Session对象。
  ASP.NET带来了一个新的键与键值的对象—Cache.除了存储键与键值对外,Cache对象还提供了另外的一些存储短期数据的新功能:
  依赖—当一个键插入Cache对象时,我们可以设置它的依赖性。当依赖的对象改变时,这个键将被删除。现在支持的依赖对象有文件,其他的键和时间。 
自动失效—没有依赖的键值,当使用频率不高时,将被自动删除。 
  支持回调—当一个键将被删除时,我们可以得到一个事件,在这个事件中来更新键值或取消删除操作。 
当我们在使用Cache对象时,必须注意这一点:
使用Cache对象中的键值之前,必须每一次都检查键值是否存在。
  由于在Cache对象中的键值由于其依赖或者使用频率较低,都会被删除,所以,每一次使用Cache中的对象,都必须检查是否存在。
  例如,我们可以用如下一段代码来返回DataSet.


 
 
 Private Function LoadDataSet() As DataSet
  Dim sqlConnection As SQLConnection
  Dim sqlAdapater As SQLDataSetCommand
  Dim datasetProducts As New DataSet()
  Dim sqlDSN As String
  Dim sqlSelect As String

  " Connection String and Select statement
  sqlDSN = "server=localhost;uid=sa;pwd=;database=grocertogo"
  sqlSelect = "Select * From Products"

  " Connect
  sqlConnection = new SQLConnection(sqlDSN)
  sqlAdapater = new SQLDataSetCommand(sqlSelect, sqlConnection)

  " Fill dataset create product table
  sqlAdapter1.FillDataSet(datasetProducts, "products")

  Return products
End Function 
  我们很容易用Cache对象来改写这段代码,使只在DataSet不存在在Cache中才调用LoadDataSet()。


 
 
 Public Function GetProductData() As DataSet
  If (IsNothing(Cache("ProductData")) Then
    Cache("ProductData") = LoadDataSet()

  Return Cache("ProductData")
End Function 
  Cache对象在许多地方和Application对象有许多相似之处,而最大的不同是Cache支持了依赖。

ASP.net中模板的简单使用

1.新建一个站点,右键站点,添加一个新项,选择 命名为:MasterPage.master 2.修改原先的代码,秩序在body标签中添加一个表格,表格中添加四个内容占位符。 无标...
  • sumirry
  • sumirry
  • 2014年11月29日 11:29
  • 1871

ASP.NET中如何正确使用Session

Asp.Net中的Session要比Asp中的Session灵活和强大很多,同时也复杂很多;看到有一些Asp.Net开发人员报怨说Session不稳定,莫名其妙的丢失,其实这正是Asp.Net改进的地...
  • Bens2014
  • Bens2014
  • 2014年06月01日 21:06
  • 765

ASP.NET Web.config配置文件的基本使用方法。很适合新手参看

花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法。很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点。所以这里只介绍一些比较常用的节点。 xml ...
  • wangyujian1223
  • wangyujian1223
  • 2016年10月27日 10:45
  • 629

asp.net中自定义类的应用

了解类的概念,参考下列图片:
  • yayun0516
  • yayun0516
  • 2014年11月21日 16:40
  • 839

asp.net web实现定时器功能

在web程序上实现定时器,有一定难度,浏览器端其实只需要使用js的定时器就可以实现,但服务端如何实现呢?都是使用Global.asax加Timer 实现的,但很多文章却没有提到这种设计的问题。 ...
  • jybjy
  • jybjy
  • 2015年09月18日 12:10
  • 2099

asp.net 正确的使用session

asp.net 正确的使用session
  • paolei
  • paolei
  • 2016年04月11日 20:12
  • 1194

基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)

从这篇博客,我会一步步的交给大家,easyui框架最常用的一个控件datagrid,这个控件非常的好用,不仅仅是用它显示数据和删除数据。...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2014年02月19日 17:36
  • 42466

ASP.NET使用Redis共享缓存示例

第一步:下载程序   在https://github.com/MSOpenTech/redis/releases下载安装服务器端。   基本上就是下一步、下一步的,注意:安装过程会询问是否添加环境变量...
  • a497785609
  • a497785609
  • 2016年03月29日 09:11
  • 2870

asp.net中cookie和session的区别和相关使用

彻底研究了下cookie和session的原理,发现了很多有趣的东西,原来我的很多想法和制定协议的那些大神们也有相同之处! cookie是存放于用户的本地的机器上的小文件,由浏览器创建和读写这个...
  • wangyh_128
  • wangyh_128
  • 2014年08月14日 11:21
  • 770

asp.net web开发所用到的技术

基本要求 1. 熟悉一种语言的编程模型(3中程序执行顺序, 相关基本类型, 事件机制,反射机制, 函数变量作用域, 线程)   技术进阶: 2. 事件导向思维(UI的操作与有些逻辑需要事件, ...
  • u012441545
  • u012441545
  • 2016年06月13日 20:28
  • 1323
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET编程技术-ASP.NET中使用Caching
举报原因:
原因补充:

(最多只允许输入30个字)