Jag har några frågor kring hur man ska använda cachen i asp.net. Säg t.ex. att man har ett system med flera användare som ska se olika saker. Vore det bäst att hämta in all data för alla användare, lägga det i cachen, och sedan använda sig av ett rowfilter för att returnera rätt information. Eller bör man endast hämta informationen specifik för den aktuella användare och lägga det i cachen?
I princip är det mer effektivt att lagra små cacheblock, eftersom såväl objekttdeserialisering som rowfilter tar tid. Däremot kan det bli något svåröverskådligt att lagra så, och om informationen ändå är knuten till den inloggade användaren så finns ju Session.
I princip är det mer effektivt att lagra små cacheblock, eftersom såväl objekttdeserialisering som rowfilter tar tid. Däremot kan det bli något svåröverskådligt att lagra så, och om informationen ändå är knuten till den inloggade användaren så finns ju Session.
Jo, men det är ganska mycket information så därför undviker jag Session. Problemet med små block är att kunna komma åt och förstöra dem vid rätt tillfälle. Säg att man har en repeater som visar personliga events, sedan på en undersida så har man en repeater som visar projektrelaterade events. Om man lägger till ett projektrelaterat event så bör ju det visas bland de personliga eventsen hos de personer som berörs av projektet. Därför bör ju det personliga cacheblocket hos berörda personer förstöras för att återspegla det nya eventet. Finns det något smart sätt att lösa det på eller får man loopa igenom de berörda personerna och förstöra deras cache?
Jo, men det är ganska mycket information så därför undviker jag Session. Problemet med små block är att kunna komma åt och förstöra dem vid rätt tillfälle. Säg att man har en repeater som visar personliga events, sedan på en undersida så har man en repeater som visar projektrelaterade events. Om man lägger till ett projektrelaterat event så bör ju det visas bland de personliga eventsen hos de personer som berörs av projektet. Därför bör ju det personliga cacheblocket hos berörda personer förstöras för att återspegla det nya eventet. Finns det något smart sätt att lösa det på eller får man loopa igenom de berörda personerna och förstöra deras cache?
Det var precis detta jag syftade på när jag skrev att det blir svåröverskådligt. Om du kan skriva metoderna på ett sätt som gör att förstöringsprocessen blir enkel och transparent, så finns det inget som hindrar att man "loopar igenom och förstör", men det finns ju en risk att det hela blir så komplext att man bygger in nya prestandaproblem. Om det är värt besväret beror alldeles på hur ditt system ser ut och hur många som kan tänkas använda det.
Det var precis detta jag syftade på när jag skrev att det blir svåröverskådligt. Om du kan skriva metoderna på ett sätt som gör att förstöringsprocessen blir enkel och transparent, så finns det inget som hindrar att man "loopar igenom och förstör", men det finns ju en risk att det hela blir så komplext att man bygger in nya prestandaproblem. Om det är värt besväret beror alldeles på hur ditt system ser ut och hur många som kan tänkas använda det.
Ok, då var det som jag misstänkte då...Hur bra är det att binda olika cachar till olika filer och bara uppdatera filerna varje gång en grupp cachar ska uppdateras?
Om du har ett enkelt gruppsystem så kan du kanske binda cacheobjekten till filer i "gruppmappar". Då borde du kunna invalidera hela gruppen genom att radera mappen.
Om du har ett enkelt gruppsystem så kan du kanske binda cacheobjekten till filer i "gruppmappar". Då borde du kunna invalidera hela gruppen genom att radera mappen.
Hur påverkar det prestandan jämfört med att t.ex. loopa igenom och förstöra de olika cacharna?