Så langt så godt.. Men når jeg nu tilføjer noget til min liste, hvordan får jeg så tilføjet dette til cachen..
I den overstående linie kode kan jeg bl.a. sætte en såkaldt dependensi ind i stedet for null - er det sårn noget man skal ud i og hvordan gør man så det ?
Eller skal man til at slette det cachede hver gang man skal tilføje noget til listen ?
Hvis du køber den bog som blev anbefalet, så er der en ret god diskussion af caching, og de forskellige caching mekanismer (hvoraf nogle ikke er implementeret i BeerHouse) - ellers er der altid google.
Hvis du gemmer en "value-type" i cachen og efterfølgende ændrer den, så skal du opdatere cachen selv. Hvis du gemmer en "reference-type", så som en af de alskens lister, så vil efterfølgende ændringer i objektet slå igennem i cachen per automatik.
mkay så når jeg opdaterer objekterne i min liste så opdateres de automatisk i cachen ? men jeg skal slette den cachede liste når jeg har tilføjet et nyt objekt til listen ? Korrekt forstået :) ? husk at smid et svar :o
Når du cacher en reference type, så refererer både cache og din kode til samme stump memory. Hvis du ændrer noget i memory, så er det den samme ændring i cachen. Man kan jo ikke kalde det at "de opdateres i cachen", fordi der kun eksisterer en instance af dit objekt i det hele taget (så længe objektet er "reference type" .. hvilket er stort set alt andet end simple konstanter og variabler)
"The Cache object has no information about the content of the items it contains. It merely holds a reference to those objects. It also provides methods to track their dependencies and set expiration policies."
public static bool UpdateCategory(int id, string name) { SQLDataAccessLayer DALayer = new SQLDataAccessLayer(); Category updateCategory = Category.GetCategoryByCategoryId(id); if (updateCategory != null) { //A litle cleanup in cache - is there a better way? //DeleteCache();
Det kan jeg ikke bare sådan overskue, fordi der er andre lag jeg ikke kan se.
Jeg lavede en gang et lille script til at illustrere de ting. Det er godt nok VB men mon ikek du kan overskue det ? :) Og så bruger det session, men der burde ikke være nogen forskel med Cache i stedet for.
Har en gang lavet et lille script til test: Dim a As New ArrayList
a.Add(1) a.Add(2) a.Add(3)
Session("a") = a
Dim b As New ArrayList b = CType(Session("a"), ArrayList) 'fjerner sidste post i b b.RemoveAt(b.Count - 1)
MsgBox(a.Count)
a.count = 2 og ej 3, fordi a og b begge peger på samme memory.
Hvis du venter et par dage, hehe .. jeg sidder og bakser på noget tilsvarende, men skal lige have noget design op at stå først:) Men der kommer andre forbi her, helt sikkert :)
Jeg selv brygger på en prototype med datasets som jeg også cacher.. og efter de er cachet første gang, er alle efterfølgende ændringer i datasettene tilgængelige på alle siderne, uden nogen "opdatering" af cachen. Udfra dette, så skulle ændringer i de objekter, som er cachet een gang, være tilgængelige, så de ændrede objekter er dem som tilgås via cachen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.