Udostępnij za pośrednictwem


SqlDataSource.CacheDuration Właściwość

Definicja

Pobiera lub ustawia czas w sekundach, przez który kontrola źródła danych buforuje dane pobierane przez metodę Select(DataSourceSelectArguments) .

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

Wartość właściwości

Liczba sekund SqlDataSource buforowanych wyników Select(DataSourceSelectArguments) operacji. Wartość domyślna to 0. Wartość nie może być ujemna.

Atrybuty

Przykłady

W poniższym przykładzie kodu pokazano, jak pobrać dane z bazy danych Northwind w programie Microsoft SQL Server i wyświetlić je w kontrolce z włączonym GridView buforowaniem danych. Właściwość CacheDuration jest ustawiona na 20 sekund i, ponieważ CacheExpirationPolicy właściwość jest domyślnie ustawiona na Absolute wartość, użytkownicy tej strony będą widzieć świeże dane co 20 sekund.

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

Uwagi

Kontrolka SqlDataSource obsługuje buforowanie danych. Gdy dane są buforowane, metoda pobiera dane z pamięci podręcznej, Select a nie z bazowej bazy danych. Gdy pamięć podręczna wygaśnie, Select metoda pobiera dane z bazowej bazy danych, a następnie ponownie buforuje dane.

Kontrolka SqlDataSource automatycznie buforuje dane, gdy EnableCaching właściwość jest ustawiona true na , a CacheDuration właściwość jest ustawiona na wartość większą niż 0, co wskazuje liczbę sekund przechowywania danych w pamięci podręcznej przed odrzuceniem wpisu pamięci podręcznej. Wartość 0 wskazuje nieskończonie długą pamięć podręczną.

Zachowanie pamięci podręcznej zależy od kombinacji czasu trwania i CacheExpirationPolicy właściwości. CacheExpirationPolicy Jeśli właściwość jest ustawiona na Absolute wartość, SqlDataSource dane buforują dane w pierwszej operacji pobierania danych, przechowują ją w pamięci przez co najwyżej czas określony przez CacheDuration właściwość. Dane mogą być zwalniane przed czasem trwania, jeśli pamięć jest wymagana. Pamięć podręczna jest następnie odświeżona podczas następnej operacji. CacheExpirationPolicy Jeśli właściwość jest ustawiona na Sliding wartość, kontrolka źródła danych buforuje dane w pierwszej operacji pobierania danych, ale resetuje przedział czasu, który przechowuje pamięć podręczną dla każdej kolejnej operacji. Pamięć podręczna wygaśnie, jeśli nie ma działania przez czas równy CacheDuration wartości od ostatniej Select operacji.

Kontrolka SqlDataSource może buforować dane tylko wtedy, gdy jest w DataSet trybie. Wyjątek NotSupportedException jest zgłaszany przez metodę Select , jeśli SqlDataSource kontrolka jest ustawiona na DataReader wartość i buforowanie jest również włączone.

Ważne

W przypadku korzystania z personifikacji klienta w ramach uwierzytelniania systemu Microsoft Windows dane są buforowane, gdy pierwszy użytkownik uzyskuje dostęp do danych. Jeśli inny użytkownik żąda tych samych danych, dane są pobierane z pamięci podręcznej. Dane nie są pobierane przez wykonanie innego wywołania bazy danych w celu zweryfikowania dostępu użytkownika do danych. Jeśli oczekujesz, że więcej niż jeden użytkownik uzyskuje dostęp do danych i chcesz, aby każde pobieranie danych było weryfikowane przez konfiguracje zabezpieczeń bazy danych, nie używaj buforowania.

Dotyczy

Zobacz też