VB.NET中Caching的使用方法
ASP.NET通过两种方式支持缓存:通过CacheAPI存储任意数据,通过页面输出缓存经常被访问的页面。让我们来看一个例子。
一个电子商务的站点,它的目录一般一周更新一次。站点提供了一套用户界面让客户订购产品。当一个客户浏览目录时,系统将通过网络去查询数据库,进行各种计算,最后返回结果。
从服务器查询这些目录数据的操作是很频繁的。我们知道,这些数据一周才变化一次。所以以下的几种操作将带来性能上的损失。
1.执行ASP.NET的程序生成对数据库的查询语句。
2.通过网络,和数据库服务器进行通讯。
3.数据库服务器编译执行查询(或是执行储存过程)。
缓存机制可以减少许多这样的工作,提高应用的性能和伸缩性。我们能缓存结果以便能静态的处理客户请求,来提高性能。同时,由于减少了处理每个请求使用的资源,因此也提高了系统的伸缩性。
CacheAPI对于ASP开发人员来说,把常用的数据保存在内存里,并不是一个全新的概念。在ASP里,有两个对象完成它。
Session对象
Application对象
Session用来保存单个用户在多个请求间共享的数据,虽然在ASP.NET中有一些小的改动,但这些改动主要是在应用级的,对Session对象来说,仍然是一个保存键与键值对的集合。Application对象在ASP.NET也被保存下来了,同样是键与键值对的集合。在ASP和ASP.NET中,我们都可以使用以下代码来操作Application对象
Application("SomeInterestingData")="Exampledata"
Response.Write(Application("SomeInterestingData")
我们可以使用同样的方法访问Session对象。
ASP.NET带来了一个新的键与键值的对象—Cache.除了存储键与键值对外,Cache对象还提供了另外的一些存储短期数据的新功能:依赖—当一个键插入Cache对象时,我们可以设置它的依赖性。当依赖的对象改变时,这个键将被删除。现在支持的依赖对象有文件,其他的键和时间。自动失效—没有依赖的键值,当使用频率不高时,将被自动删除。支持回调—当一个键将被删除时,我们可以得到一个事件,在这个事件中来更新键值或取消删除操作。
当我们在使用Cache对象时,必须注意这一点:使用Cache对象中的键值之前,必须每一次都检查键值是否存在。由于在Cache对象中的键值由于其依赖或者使用频率较低,都会被删除,所以,每一次使用Cache中的对象,都必须检查是否存在。例如,我们可以用如下一段代码来返回DataSet.
PrivateFunctionLoadDataSet()AsDataSet
DimsqlConnectionAsSQLConnection
DimsqlAdapaterAsSQLDataSetCommand
DimdatasetProductsAsNewDataSet()
DimsqlDSNAsString
DimsqlSelectAsString
"ConnectionStringandSelectstatement
sqlDSN="server=localhost;uid=sa;pwd=;database=grocertogo"
sqlSelect="Select*FromProducts"
"Connect
sqlConnection=newSQLConnection(sqlDSN)
sqlAdapater=newSQLDataSetCommand(sqlSelect,sqlConnection)
"Filldatasetcreateproducttable
sqlAdapter1.FillDataSet(datasetProducts,"products")
Returnproducts
EndFunction
我们很容易用Cache对象来改写这段代码,使只在DataSet不存在在Cache中才调用LoadDataSet()。
PublicFunctionGetProductData()AsDataSet
If(IsNothing(Cache("ProductData"))Then
Cache("ProductData")=LoadDataSet()
ReturnCache("ProductData")
EndFunction
Cache对象在许多地方和Application对象有许多相似之处,而最大的不同是Cache支持了依赖。
相关文章
- ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略「建议收藏」
- Oracle 等待事件 SQL*Net break/reset to dblink 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 SQL*Net message to client 官方解释,作用,如何使用及优化方法
- .Net程序开发利用Redis提高效率(.net使用redis)
- Net开发Oracle数据库新技术攻关挑战(.net开发oracle)
- NET 对MySQL 的支持有限(.net不支持mysql)
- asp.net中Post表单保存页面状态并输出源码的实现方法
- 在SQLServer中使用CLR调用.NET方法实现思路
- .net中的session与cookies区别及使用方法
- 使用asp.net的pageDataSource中时索引问题解决方法
- GMap.Net开发之自定义Marker使用方法
- .NET的file文件上传控件使用方法修改web.config文件上传大文件
- .net与javascript脚本的交互方法总结
- ASP.NET使用GridView导出Excel实现方法
- .NET中保证线程安全的高级方法Interlocked类使用介绍
- ASP.NET读取RSS的方法
- ASP.NET使用TreeView显示文件的方法