如何使用缓存?
How to use 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)
说“缓存是一种类型,不能用于表达式”?我哪里做错了?
听起来您正在使用 IIS 缓存。首先,如果这是你的路线 - 如果你有一个可能使用缓存的程序集(如果可用),你需要创建 Caching
程序集,在其中检查 HTTPcontext
。如果它是 null
- 你在 IIS 之外 运行 并且缓存将不可用。
如果您使用高达 3.5 的框架,一个好的替代方法是下载 Enterprise Library Caching 块。如果你使用 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(....
基本上,我检索了一个数据集,我想将它缓存在服务器内存中一个月。所以我不需要在运行本月内的页面时再次调用查询。
我做了一些研究,认为 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)
说“缓存是一种类型,不能用于表达式”?我哪里做错了?
听起来您正在使用 IIS 缓存。首先,如果这是你的路线 - 如果你有一个可能使用缓存的程序集(如果可用),你需要创建 Caching
程序集,在其中检查 HTTPcontext
。如果它是 null
- 你在 IIS 之外 运行 并且缓存将不可用。
如果您使用高达 3.5 的框架,一个好的替代方法是下载 Enterprise Library Caching 块。如果你使用 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(....