SqlDataSource.CacheDuration Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt de tijdsduur opgehaald of ingesteld, in seconden, dat met het gegevensbronbeheer gegevens worden opgeslagen die door de Select(DataSourceSelectArguments) methode worden opgehaald.
public:
virtual property int CacheDuration { int get(); void set(int value); };
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.DataSourceCacheDurationConverter))]
public virtual int CacheDuration { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.DataSourceCacheDurationConverter))>]
member this.CacheDuration : int with get, set
Public Overridable Property CacheDuration As Integer
Waarde van eigenschap
Het aantal seconden dat de resultaten van een SqlDataSource bewerking in de Select(DataSourceSelectArguments) cache opgeslagen. De standaardwaarde is 0. De waarde kan niet negatief zijn.
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u gegevens ophaalt uit de Northwind-database in Microsoft SQL Server en weergeeft in een besturingselement GridView, waarbij gegevenscache is ingeschakeld. De CacheDuration eigenschap is ingesteld op 20 seconden en omdat de CacheExpirationPolicy eigenschap standaard is ingesteld op de Absolute waarde, zien gebruikers van deze pagina elke 20 seconden nieuwe gegevens.
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:SqlDataSource
id="SqlDataSource1"
runat="server"
DataSourceMode="DataSet"
ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
EnableCaching="True"
CacheDuration="20"
SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees">
</asp:SqlDataSource>
<asp:GridView
id="GridView1"
runat="server"
AutoGenerateColumns="False"
DataSourceID="SqlDataSource1">
<columns>
<asp:BoundField HeaderText="First Name" DataField="FirstName" />
<asp:BoundField HeaderText="Last Name" DataField="LastName" />
<asp:BoundField HeaderText="Title" DataField="Title" />
</columns>
</asp:GridView>
</form>
</body>
</html>
<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:SqlDataSource
id="SqlDataSource1"
runat="server"
DataSourceMode="DataSet"
ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
EnableCaching="True"
CacheDuration="20"
SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees">
</asp:SqlDataSource>
<asp:GridView
id="GridView1"
runat="server"
AutoGenerateColumns="False"
DataSourceID="SqlDataSource1">
<columns>
<asp:BoundField HeaderText="First Name" DataField="FirstName" />
<asp:BoundField HeaderText="Last Name" DataField="LastName" />
<asp:BoundField HeaderText="Title" DataField="Title" />
</columns>
</asp:GridView>
</form>
</body>
</html>
Opmerkingen
Het SqlDataSource besturingselement ondersteunt het opslaan van gegevens in cache. Terwijl gegevens in de cache worden opgeslagen, haalt de Select methode gegevens op uit de cache in plaats van uit de onderliggende database. Wanneer de cache verloopt, haalt de Select methode gegevens op uit de onderliggende database en slaat de gegevens vervolgens opnieuw in de cache op.
Het SqlDataSource besturingselement slaat automatisch gegevens in de cache op wanneer de EnableCaching eigenschap is ingesteld true op en de CacheDuration eigenschap is ingesteld op een waarde die groter is dan 0, wat het aantal seconden aangeeft dat de cache gegevens opslaat voordat de cachevermelding wordt verwijderd. Een waarde van 0 geeft een oneindig lange cache aan.
Het gedrag van de cache wordt bepaald door een combinatie van de duur en de CacheExpirationPolicy eigenschap. Als de CacheExpirationPolicy eigenschap is ingesteld op de Absolute waarde, worden gegevens opgeslagen in de SqlDataSource cache van de eerste bewerking voor het ophalen van gegevens, die deze maximaal in het geheugen ophoudt voor de hoeveelheid tijd die is opgegeven door CacheDuration de eigenschap. De gegevens kunnen vóór de duur worden vrijgegeven als het geheugen vereist is. De cache wordt vervolgens vernieuwd tijdens de volgende bewerking. Als de CacheExpirationPolicy eigenschap is ingesteld op de Sliding waarde, slaat het besturingselement voor gegevensbron gegevens op in de eerste bewerking voor het ophalen van gegevens, maar wordt het tijdvenster opnieuw ingesteld dat de cache voor elke volgende bewerking wordt bewaard. De cache verloopt als er geen activiteit is voor een tijd die gelijk is aan de CacheDuration waarde sinds de laatste Select bewerking.
Het SqlDataSource besturingselement kan alleen gegevens in de cache opslaan wanneer het zich in DataSet de modus bevindt. Er wordt een NotSupportedException uitzondering gegenereerd door de Select methode, als het SqlDataSource besturingselement is ingesteld op de DataReader waarde en caching ook is ingeschakeld.
Important
Wanneer u clientimitatie onder Microsoft Windows authentication gebruikt, worden de gegevens in de cache opgeslagen wanneer de eerste gebruiker toegang heeft tot de gegevens. Als een andere gebruiker dezelfde gegevens aanvraagt, worden de gegevens opgehaald uit de cache. De gegevens worden niet opgehaald door een andere aanroep naar de database uit te voeren om de toegang van de gebruiker tot de gegevens te verifiëren. Als u verwacht dat meer dan één gebruiker toegang heeft tot de gegevens en u wilt dat de gegevens worden opgehaald door de beveiligingsconfiguraties voor de database, gebruikt u geen caching.