欢迎光临
我们一直在努力

ASP.NET Caching /1-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

作者: rob howard, microsoft corporation
日期: 2001年10月15日    

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支持了依赖。
 

相关技术专区

warning: ocistmtexecute: ora-02291: integrity constraint (zddev.sys_c001009) violated – parent key not found in /mnt/d30/webdev/lib/libstd2.htm on line 15

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP.NET Caching /1-.NET教程,Asp.Net开发
分享到: 更多 (0)

相关推荐

  • 暂无文章