SqlDataSource.CacheDuration Właściwość

Definicja

Pobiera lub ustawia czas buforowania danych pobieranych przez metodę przez kontrolkę źródła danych w sekundach 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

Int32

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

Atrybuty

Przykłady

Poniższy przykład kodu przedstawia sposób pobierania danych z bazy danych Northwind w Microsoft SQL Server i wyświetlania ich w kontrolce GridView z włączonym buforowaniem danych. Właściwość CacheDuration jest ustawiona na 20 sekund i, ponieważ CacheExpirationPolicy właściwość jest domyślnie ustawiona na wartość, użytkownicy tej strony będą widzieć Absolute nowe 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 Select wygaśnie, 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 na true , a CacheDuration właściwość jest ustawiona na wartość większą niż 0, co wskazuje liczbę sekund przechowywania danych przez pamięć podręczną przed odrzuceniem wpisu pamięci podręcznej. Wartość 0 oznacza nieskończenie 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 buforuje dane w pierwszej operacji pobierania danych, przechowuje je 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, w ramach którego przechowuje pamięć podręczną dla każdej kolejnej operacji. Pamięć podręczna wygaśnie, jeśli nie ma aktywności 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 kontrolka SqlDataSource jest ustawiona na DataReader wartość i buforowanie jest również włączone.

Ważne

W przypadku korzystania z personifikacji klienta w ramach uwierzytelniania microsoft Windows dane są buforowane, gdy pierwszy użytkownik uzyskuje dostęp do danych. Jeśli inny użytkownik zażą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 będzie uzyskiwał 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ż