---
title: "Hur cachar man upp delar av databaser i minnet?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/95760-hur-cachar-man-upp-delar-av-databaser-i-minnet"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "asmodie"
published: "2004-01-26T15:09:27.000Z"
updated: "2004-01-29T14:08:02.000Z"
replies: 11
views: 423
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/95760-hur-cachar-man-upp-delar-av-databaser-i-minnet"
---

# Hur cachar man upp delar av databaser i minnet?

## #1 — asmodie, 2004-01-26T15:09Z

Jag försöker dra upp prestandarden för mitt användarhanterings system för webben. Jag kodar ASP.NET med C#. 

Jag undrar hur man kan cacha dataSet i minet för snabbare åtkomst för alla användare. Vilka kommandom man använder och hur man läser från minnet efter det att man laddat upp det.

Permalänk: https://www.webforum.nu/p/95760

## #2 — Gladh, 2004-01-26T15:28Z

Du kan använda dig av objektet Cache. Läs på om det i hjälpfilerna.

Om du vill bli riktigt avancerad så kan du använda dig av MS Cache Application Block. Där kan du ställa in en massa parameters hur länge ett object skall vara kvar i cachen osv osv..

<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp>

\- Magnus

Permalänk: https://www.webforum.nu/p/1261135

## #3 — Pace, 2004-01-26T15:31Z

Först och främst välkommen till webForum!

Att cacha enstaka objekt är hur simpelt som helst:

```
VB
Cache("namn") = objekt.att.cacha
objekt = Cache("namn")

C#
Cache["namn"] = objekt.att.cacha;
objekt = Cache["namn"];
```

Läs mer här:
<http://authors.aspalliance.com/aspxtreme/webapps/aspoutputcache.aspx>

Permalänk: https://www.webforum.nu/p/1261137

## #4 — asmodie, 2004-01-26T15:31Z

Jag tackar så mycket för hjälpen. Ska ta och läsa igenom MS Cache Application Block...

Permalänk: https://www.webforum.nu/p/1261139

## #5 — asmodie, 2004-01-26T20:58Z

Gladh du får gjärna förklara för mig hur den cachar upp dataset i minnet?

Permalänk: https://www.webforum.nu/p/1261357

## #6 — Gladh, 2004-01-27T07:59Z

> Gladh du får gjärna förklara för mig hur den cachar upp dataset i minnet?

Har faktiskt ingen anning eftersom jag aldrig använtt den, har skrivit en egen cache :)

Antar att man gör något sånt här.

```
CacheServer.Add(MyDataSet,"MittDataSet");
```

När man sedan vill hämta datan så gör man så här.

```
(DataSet)CacheServer["MittDataSet"];
```

Men detta är bara gissningar, garanterar dig att det står hur man skall göra i länken som du fick :)

\- M

Permalänk: https://www.webforum.nu/p/1261440

## #7 — m_soderlund, 2004-01-27T11:34Z

> **Gladh skrev:**
>
> ...har skrivit en egen cache :)

Hur ser en sådan kodsnutt ut? Varför har du skrivit en egen? (Mjo, begränsningar i MS objekt kanske..?) Kan du inte posta lite kod här så att vi får se? :D

Permalänk: https://www.webforum.nu/p/1261530

## #8 — Gladh, 2004-01-27T13:56Z

Varför skrev jag en egen? 
Tja.. erfarenhet, det är så man lär sig saker, samt att det var kul. :) Eftersom jag fått "inspiration" från MS Cache så är det nog inte begränsningar i den som spelar någon roll. Men visst jag kan ju bygga ut min hur jag vill.

Hur ser en sådan kodsnutt ut?
Det kan bli hur avancerat som helst. Men börja väldigt enkelt. De absoult enklast cachen som du kan göra är en HashTabel (vilket är grunden för de flesta cachar). Du i lagrar du ditt objekt och ett namn för objektet.

```
HashTable myCache = new HashTable();
myCache.Add("MittObject",MyObject);
```

Där har du en väldigt enkel cache :) 

Oftas vill man ha lite mer funktioner, typ att man vill kunna bestämma att datan skall vara aktuell i en vistid. Det man gör då är att man skapar ett "cacheObject" som man lägger i sin HashTable. Det består av 2 parameters. Ett object och en DateTime.

```
CacheObject cObject = new CacheObject();
cObject.Object = myObject;
cObject.ValidTo = new DateTime(2004,01,27,12,00,00);

myCache.Add("MittObject",cObject);
```

Nu har du en tidpunkt när objectet inte skall vara gilltigt längre. Antingen är man nöjd med det och kontrollerar tiden när man skall hämta objectet eller så gör man en liten snurra som ligger och kontrollerar tiden på objecten i cachen med jämnamellanrum och plockar bort de som är för gammla.

Fungerar det?
Hmm.. sist jag provade så fick jag något mystiskt fel som jag inte orkat felsöka än :(

\- Magnus

Permalänk: https://www.webforum.nu/p/1261601

## #9 — m_soderlund, 2004-01-29T10:15Z

Tackar så mycket Magnus! Bra förklarat. :D

Permalänk: https://www.webforum.nu/p/1262546

## #10 — asmodie, 2004-01-29T10:49Z

Vart lägger man den koden om man vill att den ska köras så fort siten startas? Jag vill att vissa delar alltid ska finnas cachade i minnet oberoende vilken användare som är inne.

Permalänk: https://www.webforum.nu/p/1262561

## #11 — NETwork, 2004-01-29T11:51Z

> Vart lägger man den koden om man vill att den ska köras så fort siten startas? Jag vill att vissa delar alltid ska finnas cachade i minnet oberoende vilken användare som är inne.

I global.asax: Application_Start.

Permalänk: https://www.webforum.nu/p/1262602

## #12 — asmodie, 2004-01-29T14:08Z

Trode det var det. Ville bara försäkra mig om det...

Permalänk: https://www.webforum.nu/p/1262714

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/95760-hur-cachar-man-upp-delar-av-databaser-i-minnet
