SqlDataSource.CacheDuration Eigenschaft

Definition

Ruft die Zeitspanne in Sekunden ab, die das Datenquellen-Steuerelement zum Zwischenspeichern der von der Select(DataSourceSelectArguments)-Methode abgerufenen Daten benötigt, oder legt diese fest.

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

Eigenschaftswert

Die Anzahl von Sekunden, die die Ergebnisse eines SqlDataSource-Vorgangs von der Select(DataSourceSelectArguments) zwischengespeichert bleiben. Die Standardeinstellung ist 0. Der Wert kann nicht negativ sein.

Attribute

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Daten aus der Northwind-Datenbank in Microsoft SQL Server abgerufen und in einem GridView Steuerelement mit aktivierter Datenzwischenspeicherung angezeigt werden. Ist CacheDuration auf 20 Sekunden festgelegt, und da die CacheExpirationPolicy Eigenschaft standardmäßig auf den Absolute Wert festgelegt ist, werden Benutzern dieser Seite alle 20 Sekunden neue Daten angezeigt.

<%@ 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>

Hinweise

Das SqlDataSource Steuerelement unterstützt die Datenzwischenspeicherung. Während daten zwischengespeichert werden, ruft die Select -Methode Daten aus dem Cache und nicht aus der zugrunde liegenden Datenbank ab. Wenn der Cache abläuft, ruft die Select Methode Daten aus der zugrunde liegenden Datenbank ab und speichert die Daten dann erneut zwischen.

Das SqlDataSource Steuerelement speichert Daten automatisch zwischen, wenn die EnableCaching -Eigenschaft auf true festgelegt ist und die CacheDuration -Eigenschaft auf einen Wert größer als 0 festgelegt ist. Dies gibt die Anzahl der Sekunden an, die der Cache daten speichert, bevor der Cacheeintrag verworfen wird. Der Wert 0 gibt einen unendlich langen Cache an.

Das Verhalten des Caches wird durch eine Kombination aus Dauer und CacheExpirationPolicy Eigenschaft bestimmt. Wenn die CacheExpirationPolicy -Eigenschaft auf den Absolute -Wert festgelegt ist, speichert die SqlDataSource Daten beim ersten Datenabrufvorgang zwischen und speichert sie im Arbeitsspeicher, höchstens für den Zeitraum, der durch CacheDuration die Eigenschaft angegeben wird. Die Daten werden möglicherweise vor der Dauer freigegeben, wenn der Arbeitsspeicher erforderlich ist. Der Cache wird dann beim nächsten Vorgang aktualisiert. Wenn die CacheExpirationPolicy -Eigenschaft auf den Sliding Wert festgelegt ist, speichert die Datenquellensteuerung Daten beim ersten Datenabrufvorgang zwischen, setzt aber das Zeitfenster zurück, in dem sie den Cache für jeden nachfolgenden Vorgang enthält. Der Cache läuft ab, wenn seit dem letzten Vorgang keine Aktivität vorhanden ist, die dem Wert seit dem CacheDuration letzten Select Vorgang entspricht.

Das SqlDataSource Steuerelement kann Daten nur zwischenspeichern, wenn es sich im DataSet Modus befindet. Eine NotSupportedException Ausnahme wird von der Select -Methode ausgelöst, wenn das SqlDataSource Steuerelement auf den DataReader Wert festgelegt ist und die Zwischenspeicherung ebenfalls aktiviert ist.

Wichtig

Wenn Sie den Clientidentitätswechsel unter der Microsoft Windows-Authentifizierung verwenden, werden die Daten zwischengespeichert, wenn der erste Benutzer auf die Daten zugreift. Wenn ein anderer Benutzer dieselben Daten anfordert, werden die Daten aus dem Cache abgerufen. Die Daten werden nicht durch einen weiteren Aufruf der Datenbank abgerufen, um den Zugriff des Benutzers auf die Daten zu überprüfen. Wenn Sie erwarten, dass mehrere Benutzer auf die Daten zugreifen und jeder Abruf der Daten von den Sicherheitskonfigurationen für die Datenbank überprüft werden soll, verwenden Sie keine Zwischenspeicherung.

Gilt für:

Weitere Informationen