Znalazłem się w CacheItem
, który nie został poprawnie oczyszczony. Patrząc na MSDN i poprawić sobie w użyciu kalkulacji UTC oparciu znalazłem to mylące informacje:W jaki sposób buforowanie "Priorytet" i "AbsoluteExpiration" współdziałają ze sobą?
AbsolutExpiration
służy do ustawiania jest "żywy keep-" danego CacheItem
, Priority.NotRemovable
służy do wymuszania na zawsze CacheItem
. Brak powiadomienia o tym, która właściwość zastępuje drugą.
Poniższy kod wykonuje kompilację, a program SQL Profile również potwierdza, że baza danych jest sprawdzana tylko raz, a każde inne żądanie pochodzi z pamięci podręcznej.
CacheItemPolicy _cachePolicy = new CacheItemPolicy()
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)),
Priority = CacheItemPriority.NotRemovable
};
Przypuszczam, że ta siła kod elementy cache pozostać na zawsze, ale są kasowane po upływie 12 godzin od stworzenia, zgodnie z uwagą MSDN chodzi o ustawienia.
„implementacje Cache należy ustawić NotRemovable priorytet dla wpisu cache tylko wtedy, gdy realizacja cache zapewnia sposoby eksmitować wpisy z pamięci podręcznej oraz zarządzanie liczbę wpisów cache”
Wtedy z drugiej strony, dlaczego obie nieruchomości miałyby ze sobą współpracować? Czy implementacja przynosi pewnego rodzaju "więcej nieusuwalnego"?
Sam się nad tym zastanawiałem dzięki niejasnej dokumentacji. W moim przypadku chciałbym, aby zapis w pamięci podręcznej nie był usuwany, chyba że wygasa, aby zapobiec czyszczeniu pamięci podręcznej pod dużym obciążeniem przed wygaśnięciem jej ważności. –