Jag har en sida med en GridView som är databunden till en DataView, dv. Jag vill kunna spara DataViewen mellan Postbacks för den aktuella användaren. Jag har tidigare sparat ner DataView'n i en cache-variabel (dvVar) på följande vis: Sessionsvariabler använder också serverns minne och är egentligen där du vill lagra den här typen av saker, problemet med sessionsvariabeln är väl tyvärr att den alltid kommer hålla objektet sessionstiden ut. Men det handlar ju hela tiden om att väga för och nackdelar mot varandra. Cachningen används just nu enbart för Sorting och Paging i en Gridview som fylls på med data från ett underliggande affärslager. Min tanke med cachningen är att endast behöva gå till webbservern för att hämta data och slippa anropa databasen vid varje postback, dvs då användaren t.ex. gör en sortering på Gridview'n. Hur lång tid tar det innan cachen töms om jag cachar DataView'n på följande sätt? Hur länge datat ligger kvar beror på hur ofta det används och hur mycket som lagras i cachen.Spara DataView mellan postbacks
Cache["dvVar"] = dv;
Jag upptäckte att Cachevariablen dvVar blir åtkomlig för alla användare, vilket inte kommer att funka i ett fleranvändarsystem. När sidan laddas så skrivs dvVar till cachen med den aktuella användarens specifika Dataview. När sedan nästa användare laddar sidan, så kommer dvVar att skrivas över med denne användarens specifika DataViews innehåll.
DataView'n kommer oftast att vara liten till storleken, men kan ibland innehålla några tusen rader. Den behöver endast vara tillgänglig för den aktuella användaren och bara hålla genom postbacks.
Vilket sätt är bäst för att spara ner DataView'n mellan postbacks? Det går ju att spara ner DataView'n med användarunika variabelnamn i Cachen (t.ex. "dvVar" + User.Identity.Name), men om applikationen har många samtida användare kanske det blir trögt för webbservern? Använda sessionsvariabler (som antagligen sparar DataViewn's innehåll hos klienten och därmed skonar webbservern?)?
Sv: Spara DataView mellan postbacks
Tycker man att det drar för mycket minne kan man serialisera den på disk mellan anropen, men då sänker du prestandan lite per request.
Många sådana frågor får man ställa, men har du kollat om deet verkligen behöver cachas? Sql server cachar ju resultat också och andra hämtningen av samma data brukar gå väldigt fort.Sv:Spara DataView mellan postbacks
Sv: Spara DataView mellan postbacks
Cache["dvVar"] = dv;
Hur påverkar jag tiden till en time-out av cachen?
Sv:Spara DataView mellan postbacks
Använd metoden Add, så kan du ställa in hur länge du vill att datat som längst ska ligga kvar, och vilken prioritet det ska ha.