【问题标题】:How to use caching?如何使用缓存?
【发布时间】:2015-03-14 16:27:23
【问题描述】:

基本上,我检索了一个数据集,我想将它缓存在服务器内存中一个月。所以这个月内运行页面的时候不需要再调用查询了。

我做了一些研究,认为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) 说“缓存是一种类型,不能用于表达”?我哪里做错了?

【问题讨论】:

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


    【解决方案1】:

    听起来您正在使用 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(....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 2016-03-29
      • 1970-01-01
      • 2020-04-09
      • 2018-12-10
      • 2015-09-01
      • 1970-01-01
      • 2011-06-23
      相关资源
      最近更新 更多