2017-11-15 17 views
1

우리 웹 사이트는 현재 하나의 웹 서버에서 실행되며 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 

그리고 평균 페이지로드 시간 :

Page load times with HttpContext.Cache

변경 한 후에 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 밀리미터로 급상승했습니다! 아무것도 여기에 이상한에서

Page load times with HttpContext.Items

을 보입니까? HttpContext.Current.Items가 각 요청 전에 초기화되는 요청 별 사전이므로 캐시에 대한 액세스가 빠르다는 것을 알고있었습니다.

+0

무슨 일이 있었는지 알아 냈습니까? –

+1

@DavidClarke - 예. 그것은 응용 프로그램 문제 였고, 나는 그것을 아래에 개설했습니다. 감사! –

답변

1

나는이 질문에 대한 답변을 후속 작업하는 것을 잊어 버렸습니다. 기본적으로 느리지는 않습니다. 제품 이미지가 로컬 웹 사이트의 이미지 폴더에서 누락 된 경우 응용 프로그램은 실제 사이트로 제품 이미지를 다운로드하라는 HTTP 요청을하고 이러한 요청을하지 않도록 캐시 키를 설정하여 이러한 조회를하지 않아도됩니다 후속 페이지 새로 고침시.

이것은 RAM 캐시를 사용하여 제품 이미지를 다운로드하려고했는지 여부를 저장하는 데 의존하며 HttpContext.Items를 사용하도록 변경 한 후 응용 프로그램은이 다운로드를 해당 기간 동안 시도했음을 기억합니다 그 요청을 잊어 버린 다음 페이지를 새로 고치면 라이브 사이트로 HTTP 요청이 다시로드되어 제품 이미지를 다운로드하게됩니다. 이는 서버 측에서 완료되며 더 오래 걸립니다.

실례 : :)

관련 문제