Поделиться через


SqlDataSource.CacheDuration Свойство

Определение

Возвращает или задает длину промежутка времени (в секундах), в течение которого элемент управления источником данных кэширует данные, извлекаемые методом 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

Значение свойства

Количество секунд, на протяжении которых объект SqlDataSource кэширует результаты операции Select(DataSourceSelectArguments). Значение по умолчанию равно 0. Значение не может быть отрицательным.

Атрибуты

Примеры

В следующем примере кода показано, как получить данные из базы данных Northwind в Microsoft SQL Server и отобразить их в элементе GridView управления с включенным кэшированием данных. Для CacheDuration параметра задано значение 20 секунд. Так как CacheExpirationPolicy свойство имеет Absolute значение по умолчанию, пользователи этой страницы будут видеть свежие данные каждые 20 секунд.

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

Комментарии

Элемент SqlDataSource управления поддерживает кэширование данных. Пока данные кэшируются, метод извлекает данные из кэша, Select а не из базовой базы данных. По истечении срока действия кэша Select метод извлекает данные из базовой базы данных, а затем снова кэширует данные.

Элемент SqlDataSource управления автоматически кэширует данные, если свойству EnableCaching присвоено значение true , а CacheDuration свойству присваивается значение больше 0, указывающее время в секундах, в течение которого кэш хранит данные до удаления записи кэша. Значение 0 указывает на бесконечно длинный кэш.

Поведение кэша определяется сочетанием длительности и CacheExpirationPolicy свойства . Если свойству CacheExpirationPolicyAbsolute присвоено значение , SqlDataSource данные кэшируются при первой операции извлечения данных, хранятся в памяти в течение не более времени, указанного свойством CacheDuration . Данные могут быть освобождены до истечения длительности, если требуется память. Затем кэш обновляется во время следующей операции. Если свойству CacheExpirationPolicy присвоено Sliding значение , элемент управления источником данных кэширует данные при первой операции извлечения данных, но сбрасывает период времени, в котором он хранит кэш для каждой последующей операции. Срок действия кэша истекает, если не было действий в течение времени, равного значению CacheDuration с момента последней Select операции.

Элемент SqlDataSource управления может кэшировать данные только в DataSet режиме . Метод NotSupportedException создает Select исключение, если SqlDataSource для элемента управления задано DataReader значение и кэширование также включено.

Важно!

При использовании олицетворения клиента в рамках проверки подлинности Microsoft Windows данные кэшируются, когда первый пользователь обращается к данным. Если другой пользователь запрашивает те же данные, данные извлекаются из кэша. Данные не извлекаются путем другого вызова базы данных для проверки доступа пользователя к данным. Если вы ожидаете, что несколько пользователей будут получать доступ к данным и хотите, чтобы каждое извлечение данных проверялось конфигурациями безопасности базы данных, не используйте кэширование.

Применяется к

См. также раздел