우리 웹 사이트는 현재 하나의 웹 서버에서 실행되며 HttpContext.Cache를 사용합니다. 우리는 사이트 부하를 균형있게 만들려고하고 있으며 어떤 형태의 분산 캐시를 사용해야합니다. AppFabric을 살펴 봤지만 HttpContext.Items를 요청 당 캐시로 사용하여이 기능을 분산 캐시에 적용 할 수 있다고 생각했습니다. 이 약자로왜 HttpContext.Items에 액세스하는 것이 HttpContext.Cache보다 훨씬 느린가요?
다음은 캐싱 코드입니다 : ~ 35ms (막대 하나 개 이상)의
Public Shared Function getFromCache(key As String) As Object
Return HttpContext.Current.Cache(key)
End Function
Public Shared Sub addToCache(key As String, value As Object)
addToCache(key, value, CACHE_DURATION_IN_MINUTES)
End Sub
Public Shared Sub addToCache(ByVal key As String, ByVal value As Object, ByVal durationInMinutes As Integer)
HttpContext.Current.Cache.Insert(key, value, Nothing, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(durationInMinutes))
End Sub
그리고 평균 페이지로드 시간 :
변경 한 후에 HttpContext를 사용하는 방법에 대해 설명합니다. 항목, 평균 페이지로드 시간이 으로 크게 늘어났습니다. 증가 :
Public Shared Function getFromCache(key As String) As Object
Return HttpContext.Current.Items(key)
End Function
Public Shared Sub addToCache(key As String, value As Object)
addToCache(key, value, CACHE_DURATION_IN_MINUTES)
End Sub
Public Shared Sub addToCache(ByVal key As String, ByVal value As Object, ByVal durationInMinutes As Integer)
HttpContext.Current.Items.Add(key, value)
End Sub
평균 페이지로드 시간이 35 밀리 초에서 1,000 - 1,200 밀리미터로 급상승했습니다! 아무것도 여기에 이상한에서
을 보입니까? HttpContext.Current.Items가 각 요청 전에 초기화되는 요청 별 사전이므로 캐시에 대한 액세스가 빠르다는 것을 알고있었습니다.
무슨 일이 있었는지 알아 냈습니까? –
@DavidClarke - 예. 그것은 응용 프로그램 문제 였고, 나는 그것을 아래에 개설했습니다. 감사! –