asp.net mvc CACHE   zodpovězená otázka

ASP.NET MVC

Dobrý den přeji,

jakým způsobem lze co nejdéle udržet data v server cache, jedná se o data, která v aplikaci často používám a jsou neměnná, je proto zbytečné je při každém požadavku znovu načítat z DB.Pokud je vložim do cache s parametry :

AbsoluteExpiration : DateTime.maxValue

SlidingExpiration : NoSlidingExpiration

CacheItemPriority : CacheItemPriority.NotRemovable

tak se stane že zhruba po hodině jsou ty data stejně fuč a znovu se musejí "zdlouhavě" načítat z DB. Je možné ze se cache prostě zničeho nic vymaže? ... kdy k tomu dojde? jaktože k tomu dochází pravidelně a jaktože k tomu došlo když jsem nastavil Absolutní expiraci na maximum? Lze to nějak zachytit? nějaký speciální callback?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Cachování nemám tak nastudované,ale mám takový pocit,že nastavit expiraci na nesmyslně vysokou hodnotu nebude fungovat - nevím však zda z důvodu limitu či přepsání jinou default hodnotou,která je povětšinou vyšší než nakonfigurovaná. MSDN Vám nic zajímavého k tomuto témetu neřeklo? Pokud jsou data neměnná,tak proč je poté taháte stále z DB,proč jej nedáte např do nějakého Enum?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevím teda jak probíhá mapování instancí aplikace na požadavky, ale mám takový dojem, že při každém novém requestu na server se vytvoří nová instance a ať byly předtím data uložena v ENUMu nebo např. ve statické třídě, poté už tam přece nemohou být. Vytvořila se nová instance a s ní i nové ENUMy a třídy( a to by znamenalo že při každém novém requestu musím data opět do paměti nahrát).

Zkusím tedy AbsoluteExpirationDate nastavit na nějaké smysluplnější hodnoty a uvidím. Jinak děkuji zatím za rady :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Každý prohlížeč a vše po cestě (proxy servery) se chovají ke cachování různě. U serveru je to sice trochu více předvídatelné a nastavitelné, ale pořád nikdo nemůže zaručit, že se Application Pool nezruší a data se budou muset načítat znovu. Další možností je, že dat je nacachováno hodně nebo prostě z nějakého důvodu dochází pamět a server tak cache pročistí.

Obvykle by se měla cache ASP.NET používat na krátkodobější záležitosti při veklém množství přístupů, nikoliv zdlouhavému načítání z databáze. Pokud jsou data opravdu tak náročná na načtení, stojí za zvážení si je předcachovat do databáze v nějaké podobě, která se načte rychleji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback