Dela via


Cachelagring i .NET Framework-program

Med cachelagring kan du lagra data i minnet för snabb åtkomst. När data används igen kan program hämta data från cacheminnet i stället för att hämta dem från den ursprungliga källan. Detta kan förbättra prestanda och skalbarhet. Dessutom gör cachelagring data tillgängliga när datakällan är tillfälligt otillgänglig.

.NET Framework tillhandahåller cachelagringsfunktioner som du kan använda för att förbättra prestanda och skalbarhet för både Windows-klient- och serverprogram, inklusive ASP.NET.

Anmärkning

I .NET Framework 3.5 och tidigare versioner tillhandahöll ASP.NET en cacheimplementering i minnet i System.Web.Caching namnområdet. I tidigare versioner av .NET Framework var cachelagring endast tillgängligt i System.Web namnområdet och krävde därför ett beroende av ASP.NET klasser. I .NET Framework 4 System.Runtime.Caching innehåller namnområdet API:er som är utformade för både webb- och icke-webbprogram.

Cachelagring av data

Du kan cachelagra information med hjälp av klasser i System.Runtime.Caching namnområdet. Cachelagringsklasserna i det här namnområdet innehåller följande funktioner:

  • Abstrakta typer som utgör grunden för att skapa anpassade cacheimplementeringar.

  • En konkret cacheimplementering av minnesinternt objekt.

Den abstrakta bascachelagringsklassen (ObjectCache) definierar följande cachelagringsuppgifter:

  • Skapa och hantera cacheposter.

  • Ange information om förfallodatum och borttagning.

  • Utlöser händelser som genereras som svar på ändringar i cacheposter.

Klassen MemoryCache är en minnesintern cacheimplementering av ObjectCache klassen. Du kan använda MemoryCache klassen för de flesta cachelagringsuppgifter.

Anmärkning

Klassen MemoryCache modelleras på det ASP.NET cacheobjekt som definieras i System.Web.Caching namnområdet. Därför den interna cachelagringslogik som liknar den logik som angavs i tidigare versioner av ASP.NET.

Ett exempel på hur du använder för cachelagring i ett WPF-program finns i Genomgång: Cachelagring av programdata i ett WPF-program.

Cachelagring i ASP.NET-program

Cachelagringsklasserna i System.Runtime.Caching namnområdet tillhandahåller funktioner för cachelagring av data i ASP.NET.

Anmärkning

Om ditt program är avsett för .NET Framework 3.5 eller tidigare måste du använda cachelagringsklasserna som definieras i System.Web.Caching namnområdet. Mer information finns i översikten över ASP.NET cachelagring.

Anmärkning

När du utvecklar nya program rekommenderar vi att du använder MemoryCache klassen. API:et System.Runtime.Caching som anges i namnområdet är som det API som anges i Cache namnområdet. Därför är API:et bekant om du använde cachelagring i tidigare versioner av ASP.NET. Ett exempel på hur du använder cachelagring i ASP.NET program finns i Genomgång: Cachelagring av programdata i ASP.NET.

Cachelagring av utdata

Om du vill cachelagrat programdata manuellt kan du använda MemoryCache klassen i ASP.NET. ASP.NET stöder också cachelagring av utdata, som lagrar genererade utdata från sidor, kontroller och HTTP-svar i minnet. Du kan konfigurera cachelagring av utdata deklarativt på en ASP.NET webbsida eller med hjälp av inställningar i Web.config-filen. Mer information finns i outputCache-element för cachelagring (ASP.NET Inställningsschema).

Med ASP.NET kan du utöka utdata-cachning genom att skapa anpassade utdatacacheleverantörer. Genom att använda anpassade leverantörer kan du lagra cachelagrat innehåll med hjälp av andra lagringsenheter, till exempel diskar, molnlagring och distribuerade cachemotorer. Om du vill skapa en anpassad cacheprovider för utdata skapar du en klass som härleds från OutputCacheProvider klassen och konfigurerar programmet så att det använder den anpassade cacheprovidern för utdata.

Cachelagring i WCF REST Services

För WCF REST-tjänster gör .NET Framework att du kan dra nytta av den deklarativa cachelagring av utdata som är tillgänglig i ASP.NET. På så sätt kan du cachelagra svaren från dina WCF REST-tjänståtgärder. När en användare skickar en HTTP GET-begäran till en tjänst som är konfigurerad för cachelagring skickar ASP.NET tillbaka det cachelagrade svaret och tjänstmetoden anropas inte. När cacheminnet upphör att gälla nästa gång en användare skickar en HTTP GET-begäran anropas tjänstmetoden och svaret cachelagras igen.

Med .NET Framework kan du också implementera villkorlig HTTP GET-cachelagring. I REST-scenarier används ofta en villkorlig HTTP GET-begäran av tjänster för att implementera intelligent HTTP-cachelagring enligt beskrivningen i HTTP-specifikationen. Mer information finns i Cachelagringsstöd för WCF Web HTTP-tjänster.

Utöka cachelagring i .NET Framework

Cachelagring i .NET Framework är utformad för att vara utökningsbar. Med ObjectCache klassen kan du skapa en anpassad cacheimplementering. Den här klassen innehåller medlemmar som är tillgängliga för alla hanterade program, inklusive Windows Forms, Windows Presentation Foundation (WPF) och Windows Communications Foundation (WCF). Du kan göra detta för att skapa en cacheklass som använder en annan lagringsmekanism, eller om du vill ha detaljerad kontroll över cacheåtgärder.

Om du vill utöka cachelagringen kan du göra följande:

Mer information finns i posten Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET Framework 4.0 Series) på Scott Guthrie blogg.

Se även