Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
xpoproci
Člen
Avatar
xpoproci:4.10.2019 13:44

Ahojte, nevie niekto o nejakom šikovnom spôsobe ako vyčistiť output cache pamäť z kódu?
Reset IIS neprichádza do úvahy.
Použitie

Response.RemoveOutputCacheItem("url");

je tiež nereálne, keďže sa mi cachujú tisícky stránok resp. url/nazov/nieco/Id a WCF endpointov s rôznymi filtrovacími parametrami.

var keys = new List<string>();
var enumerator = HttpContext.Current.Cache.GetEnumerator();

while (enumerator.MoveNext())
{
     keys.Add(enumerator.Key.ToString());
 }

 foreach (var key in keys)
 {
     HttpContext.Current.Cache.Remove(key);
 }

Maže iba klientskú cache, teda bundle a obrázky.
Skúšal som ešte nastaviť expiráciu na output cache na čas pred 10mi hodinami, ale to tiež nefungovalo.
Ešte mi napadá vytiahnuť z logu IIS HashSet všetkých navštívených stránok a použiť ten Response.Remo­veOutputCache­Item, ale to mi nepríde ako veľmi praktické riešenie.

Editováno 4.10.2019 13:44
Odpovědět
4.10.2019 13:44
Motto
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
xpoproci
Člen
Avatar
xpoproci:15.10.2019 12:21

Ak by to niekoho zaujímalo tak nakoniec som to vyriešil takto.
V application starte som nastavil

HttpRuntime.Cache.Insert("PageCacheToBeRemoved", DateTime.Now);

potom v jednotlivých controlleroch alebo pagoch v konštruktore

HttpContext.Current.Response.AddCacheItemDependency("PageCacheToBeRemoved");

a nakoniec v samotnom evente na premazanie cache som iba opäť nastavil

HttpRuntime.Cache.Insert("PageCacheToBeRemoved", DateTime.Now);
Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
15.10.2019 12:21
Motto
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.