如何使用缓存?

时间:2015-01-16 05:11:28

标签: asp.net .net vb.net caching

基本上,我检索了一个数据集,我想将它缓存在服务器内存中一个月。因此,我不需要在本月内运行页面时反复调用查询。

我做了一些研究,认为http://msdn.microsoft.com/en-us/library/system.web.caching.cacheitemremovedcallback%28v=vs.110%29.aspx是进行缓存的方法,基本上我修改了子代码以适应我的应用程序

Public Sub RemovedCallback(k As String, v As Object, r As CacheItemRemovedReason)
    itemRemoved = True
    reason = r
End Sub
Function AddItemToCache(cacheKey as String, ds as Dataset)
    itemRemoved = False

    onRemove = New CacheItemRemovedCallback(AddressOf Me.RemovedCallback)

    If (IsNothing(Cache(cacheKey))) Then
        Cache.Add(cacheKey, ds, Nothing, DateTime.Now.AddMonths(1), TimeSpan.Zero, CacheItemPriority.High, onRemove)
    End If
End Function

这段代码中有很多错误。其中一个错误是Cache(cacheKey)说"缓存是一种类型,不能用于表达"?我哪里做错了?

1 个答案:

答案 0 :(得分:0)

听起来像是在使用IIS缓存。首先,如果这是您的路线 - 如果您有可能使用缓存的程序集(如果可用),则需要创建Caching程序集,在其中检查HTTPcontext。如果是null - 您在IIS之外运行并且缓存将不可用。 如果您使用最高3.5的框架,则可以下载企业库缓存块。如果您使用FW4.0 +,则使用 system.runtime.caching 。这样,缓存将始终可用。还有AppFaric和一些第三方缓存实现,但这可能超出了你的范围。

对于您的错误,听起来像您的标识符Cache [您的代码未显示您如何分配它]实际上是一种类型。那就是你这样做了

If Integer Is Nothing....

您需要使用的是语法

System.Web.Caching.Cache.Add...

现在,这是实例。所以,你可以做的是

Dim c as Cache = System.Web.Caching.Cache
c.Add(....