2015-01-16 2 views
0

기본적으로 데이터 세트를 검색하여 서버 메모리에 1 개월 동안 캐시하려고합니다. 따라서 이번 달에 페이지를 실행할 때 쿼리를 다시 호출 할 필요가 없습니다. 캐싱을 사용하는 방법?

나는 기본적으로 내가이 코드 조각에 꽤 많은 오류가 내 응용 프로그램

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 

에 맞게 하위 코드를 수정, 몇 가지 조사를하고 http://msdn.microsoft.com/en-us/library/system.web.caching.cacheitemremovedcallback%28v=vs.110%29.aspx 캐시를 할 수있는 방법이라고 생각합니다. 오류 중 하나는 Cache(cacheKey)에 대해 "캐시가 유형이고 표현에 사용할 수 없습니다"라고 말합니 까? 내가 어디에서 잘못 했니?

답변

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(.... 
입니다.
관련 문제