ASP.NET Caching(2)
2024-07-10 12:58:35
供稿:网友
cache dependencies
依赖可以使键值在文件改变时,或是在某一个指定时间被删除
。让我们看一下每种依赖。
文件依赖(file-based dependency)
文件依赖是指,当磁盘上的一个文件改变时,删除cache对象中的对应一项。下面让我们看一个从xml文件中读取数据的例子。
dim dom as xmldocument()
dom.load(server.mappath("product.xml")
cache("productdata") = dom
当product.xml文件内容改变时,我们应该使cache中的数据失效。假设product.xml在aspx文件的同一目录中,我们可以使用以下的代码:
dim dependency as new cachedependency(server.mappath("product.xml"))
cache.insert("productdata", dom, dependency)
在这段代码中,我们建立了一个cachedependecy类的实例dependency,并将product.xml的路径传给这个实例。然后使用insert方法建立一个依赖于文件的键值。
时间依赖(time-based dependency)
时间依赖就是在指定时间删除cache对象中的一项。同样我们可以使用insert方法来加入有时间依赖的键值。
绝对时间—设置一个绝对的时间。例如,10分钟以后,删除此项。
相对时间—当一个cache有若干时间没有被访问,删除此项。
以下是一段代码,使用相对时间依赖,使得productdata当有10分钟没有被访问的话,将被删除。每一次对productdata的访问,都将使productdata保持另一个10分钟的有效。
' 10 minute time span
cache.insert("productdata", loaddataset(), nothing, datetime.maxvalue, timespan.fromseconds(10))
以上是对cache api的简单讨论,大家从这里可以看出这套接口的简单易用。asp.net使用这套api实现了页面输出缓存。
页面输出缓存(page output caching)
asp.net的页面输出缓存将把这个页面的内容放在cache中。我们已经看过如何将一个数据集放入缓存。那么,能不能将整个页面缓存呢?这样的话,就不需要对每一个请求都执行代码,可以直接从内存中获取结果,这将带来巨大的性能提高。
对页面缓存有两种接口,高层接口和底层接口。这里我们只讨论高层接口。(对于底层接口,可以参考msdn中的相关文章)
高层接口包括两个页面指示符,一个表明页面刷新的时间间隔,一个表明当某个参数变化时刷新页面。
<%@ outputcache duration="10" % varybyparam="none">
将这个指示符放在页面上部,页面结果将被缓存10秒。10秒以后,这个页面将被重新执行。下面是一个例子。
<%@ outputcache duration="10" % varybyparam="none">
<script runat="server">
public sub page_load()
span1.innerhtml = datetime.now.tostring("r")
end sub
</script>
<font size=6>the time is: <font color=red><span id="span1" runat="server"/></font></font>
这个页面在第一次请求时被执行一次,显示执行时的时间。这个结果将在缓存里保存10秒。假如我们在10:30:12时请求这个页面,在此后的10秒内,我们将会看到同样的输出。
结论
对于asp程序员来说,缓存是一项易用而强大的新技术。它的使用和asp原来的application,session对象有许多相似的地方,只是在cache对象中的数据会自动失效。cache还支持文件,时间的依赖,更是支持回调。缓存技术还被用来实现了页面缓存。本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。