Delen via


Caching in .NET Framework-toepassingen

Met caching kunt u gegevens opslaan in het geheugen voor snelle toegang. Wanneer de gegevens opnieuw worden geopend, kunnen toepassingen de gegevens ophalen uit de cache in plaats van deze op te halen uit de oorspronkelijke bron. Dit kan de prestaties en schaalbaarheid verbeteren. Bovendien maakt caching gegevens beschikbaar wanneer de gegevensbron tijdelijk niet beschikbaar is.

.NET Framework biedt cachefunctionaliteit die u kunt gebruiken om de prestaties en schaalbaarheid van zowel Windows-client- als servertoepassingen te verbeteren, waaronder ASP.NET.

Notitie

In .NET Framework 3.5 en eerdere versies heeft ASP.NET een in-memory cache-implementatie in de System.Web.Caching naamruimte geleverd. In eerdere versies van .NET Framework was caching alleen beschikbaar in de System.Web naamruimte en vereist daarom een afhankelijkheid van ASP.NET klassen. In .NET Framework 4 bevat de System.Runtime.Caching naamruimte API's die zijn ontworpen voor zowel webtoepassingen als niet-webtoepassingen.

Gegevens opslaan in cache

U kunt gegevens in de cache opslaan met behulp van klassen in de System.Runtime.Caching naamruimte. De cacheklassen in deze naamruimte bieden de volgende functies:

  • Abstracte typen die de basis vormen voor het maken van aangepaste cache-implementaties.

  • Een concrete implementatie van objectcache in het geheugen.

De abstracte basiscacheklasse (ObjectCache) definieert de volgende cachetaken:

  • Cachevermeldingen maken en beheren.

  • Verloop- en verwijderingsgegevens opgeven.

  • Activeren van gebeurtenissen die worden gegenereerd als reactie op wijzigingen in cachevermeldingen.

De MemoryCache klasse is een in-memory objectcache-implementatie van de ObjectCache klasse. U kunt de klasse gebruiken voor de MemoryCache meeste cachetaken.

Notitie

De MemoryCache klasse wordt gemodelleerd op het ASP.NET cacheobject dat is gedefinieerd in de System.Web.Caching naamruimte. Daarom is de interne cachelogica vergelijkbaar met de logica die is opgegeven in eerdere versies van ASP.NET.

Zie Walkthrough: Toepassingsgegevens in cache opslaan in een WPF-toepassing voor een voorbeeld van het gebruik van caching in een WPF-toepassing.

Caching in ASP.NET-toepassingen

De cacheklassen in de System.Runtime.Caching naamruimte bieden functionaliteit voor het opslaan van gegevens in ASP.NET.

Notitie

Als uw toepassing is gericht op .NET Framework 3.5 of eerder, moet u de cacheklassen gebruiken die zijn gedefinieerd in de System.Web.Caching naamruimte. Zie ASP.NET Cacheoverzicht voor meer informatie.

Notitie

Wanneer u nieuwe toepassingen ontwikkelt, wordt u aangeraden de MemoryCache klasse te gebruiken. De API die is opgegeven in de System.Runtime.Caching naamruimte is net als de API die is opgegeven in de Cache naamruimte. Daarom is de API bekend als u caching hebt gebruikt in eerdere versies van ASP.NET. Zie Overzicht: Toepassingsgegevens opslaan in ASP.NET voor een voorbeeld van het gebruik van caching in ASP.NET toepassingen.

Uitvoercaching

Als u toepassingsgegevens handmatig wilt opslaan, kunt u de MemoryCache klasse in ASP.NET gebruiken. ASP.NET ondersteunt ook het opslaan van uitvoercache, waarin de gegenereerde uitvoer van pagina's, besturingselementen en HTTP-antwoorden in het geheugen wordt opgeslagen. U kunt uitvoercache declaratief configureren op een ASP.NET webpagina of met behulp van instellingen in het web.config-bestand. Zie het element outputCache voor caching (ASP.NET Instellingen Schema) voor meer informatie.

ASP.NET kunt u de uitvoercache uitbreiden door aangepaste uitvoercacheproviders te maken. Met behulp van aangepaste providers kunt u inhoud in de cache opslaan met andere opslagapparaten, zoals schijven, cloudopslag en gedistribueerde cache-engines. Als u een aangepaste uitvoercacheprovider wilt maken, maakt u een klasse die is afgeleid van de OutputCacheProvider klasse en configureert u de toepassing voor het gebruik van de aangepaste uitvoercacheprovider.

Caching in WCF REST Services

Voor WCF REST-services kunt u met .NET Framework profiteren van de declaratieve uitvoercaching die beschikbaar is in ASP.NET. Hiermee kunt u reacties van uw WCF REST-servicebewerkingen opslaan in de cache. Wanneer een gebruiker een HTTP GET-aanvraag verzendt naar een service die is geconfigureerd voor caching, stuurt ASP.NET het antwoord in de cache terug en wordt de servicemethode niet aangeroepen. Nadat de cache is verlopen, wordt de volgende keer dat een gebruiker een HTTP GET-aanvraag verzendt, uw servicemethode aangeroepen en wordt het antwoord opnieuw in de cache opgeslagen.

Met .NET Framework kunt u ook voorwaardelijke HTTP GET-caching implementeren. In REST-scenario's wordt een voorwaardelijke HTTP GET-aanvraag vaak gebruikt door services om intelligente HTTP-caching te implementeren, zoals beschreven in de HTTP-specificatie. Zie Caching-ondersteuning voor WCF-web-HTTP-services voor meer informatie.

Caching uitbreiden in .NET Framework

Caching in .NET Framework is ontworpen om uitbreidbaar te zijn. Met de ObjectCache klasse kunt u een aangepaste cache-implementatie maken. Deze klasse biedt leden die beschikbaar zijn voor alle beheerde toepassingen, waaronder Windows Forms, Windows Presentation Foundation (WPF) en Windows Communications Foundation (WCF). U kunt dit doen om een cacheklasse te maken die gebruikmaakt van een ander opslagmechanisme of als u gedetailleerde controle wilt over cachebewerkingen.

Als u caching wilt uitbreiden, kunt u het volgende doen:

  • Maak een aangepaste klasse die is afgeleid van de ObjectCache klasse en geef vervolgens een aangepaste cache-implementatie op in de afgeleide klasse.

  • Maak een klasse die is afgeleid van MemoryCache klasse en pas de afgeleide klasse aan of uit. Zie Toepassingsgegevens opslaan in cache met behulp van meerdere cacheobjecten in een ASP.NET-toepassing voor een voorbeeld van hoe u dit doet.

  • Maak een klasse die is afgeleid van de OutputCacheProvider klasse en configureer de toepassing voor het gebruik van de aangepaste uitvoercacheprovider.

Zie de vermelding Extensible Output Caching met ASP.NET 4 (VS 2010 en .NET Framework 4.0 Series) op de blog van Scott Guthrie voor meer informatie.

Zie ook