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

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

Int32

Количество секунд, на протяжении которых объект 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 свойства. CacheExpirationPolicy Если свойству Absolute присвоено значение, SqlDataSource данные кэшируются при первой операции извлечения данных, удерживая его в памяти в течение, по крайней мере, времени, заданного свойствомCacheDuration. Данные могут быть освобождены до длительности, если требуется память. Затем кэш обновляется во время следующей операции. CacheExpirationPolicy Если свойству Sliding присвоено значение, элемент управления источником данных кэширует данные при первой операции извлечения данных, но сбрасывает временное окно, в котором хранится кэш для каждой последующей операции. Срок действия кэша истекает, если действие не выполняется в течение определенного времени, равного CacheDuration значению с момента последней Select операции.

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

Важно!

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

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

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