2011-10-28 2 views
8

올바르게 정리되지 않은 CacheItem에 자신을 발견했습니다.'Priority'와 'AbsoluteExpiration'이 함께 작동하는 방식은 무엇입니까?

AbsolutExpiration이의 "유지 (keep-alive)"을 설정하는 데 사용됩니다 : MSDN보고 UTC 기반의 계산을 사용하여 나 자신을 수정하는 동안, 나는이 혼란 정보를 발견 CacheItem, Priority.NotRemovableCacheItem이 영원히 존재하도록 강제하는 데 사용됩니다. 어떤 속성이 다른 속성을 재정의하는지에 대한 알림이 없습니다.

아래 코드는 컴파일되고 SQL 프로필러는 데이터베이스가 한 번만 쿼리되고 다른 모든 요청은 캐시에서 가져온 것으로 확인합니다.

CacheItemPolicy _cachePolicy = new CacheItemPolicy() 
{ 
    AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)), 
    Priority = CacheItemPriority.NotRemovable 
}; 

는이 코드 힘 캐시 항목이 영원히 머물하지만 설정에 대한 MSDN의 노트에 맞춰 창조 12 시간 후에 삭제한다고 가정합니다.

그런 다음 "을 캐시 구현은 캐시에서 항목을 축출하고 캐시 항목의 수를 관리하는 방법을 제공하는 경우에만 캐시 항목에 대한 NotRemovable 우선 순위를 설정해야 캐시 구현" 다른면, 왜 두 속성이 함께 작동합니까? 구현은 일종의 "제거 불가능한"기능을 제공합니까?

+0

불분명 한 문서 덕분에 나 자신이 궁금해했다. 필자의 경우 캐시 된 항목이 만료되기 전에 캐시가 과도한로드를 정리하는 것을 막기 위해 만료되지 않으면 캐시 된 항목이 제거되지 않도록하고 싶습니다. –

답변

5

따라서 this에 따르면 "NotRemovable"은 캐시 항목의 공간이 부족한 경우와 같이 캐시 항목이 자동으로 제거되는 것을 방지하지만 만료되거나 수동으로 캐시 항목을 꺼내면 제거됩니다. 서버가 시스템 메모리를 해제로이 우선 순위와

NotRemovable 캐시 항목이 자동으로 캐시에서 삭제되지 않습니다. 그러나이 우선 순위 수준의 항목은 항목의 절대 또는 슬라이딩 만료 시간에 따라 다른 항목과 함께 제거됩니다.

+0

당신의 대답은 질문에서 물어 보는'System.Runtime.Caching.CacheItemPriority'가 아닌'System.Web.Caching.CacheItemPriority'를 가리 킵니다. 답변을 수정하거나 삭제하십시오. 오해의 소지가 있습니다. (나는 당신의 대답을 발견했을 때 MSDN을보고 있었는데, 그것이 내가 알아 차린 유일한 이유이다). – xxbbcc

관련 문제