SqlDataSource.CacheExpirationPolicy Свойство

Определение

Возвращает или задает поведение при истечении срока действия кэша, которая в сочетании со сроком кэширования описывает принципы работы кэша, используемого элементом управления источником данных.

public:
 virtual property System::Web::UI::DataSourceCacheExpiry CacheExpirationPolicy { System::Web::UI::DataSourceCacheExpiry get(); void set(System::Web::UI::DataSourceCacheExpiry value); };
public virtual System.Web.UI.DataSourceCacheExpiry CacheExpirationPolicy { get; set; }
member this.CacheExpirationPolicy : System.Web.UI.DataSourceCacheExpiry with get, set
Public Overridable Property CacheExpirationPolicy As DataSourceCacheExpiry

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

DataSourceCacheExpiry

Одно из значений перечисления DataSourceCacheExpiry. Значением по умолчанию является Absolute.

Примеры

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

<!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"
                CacheExpirationPolicy="Sliding"
                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>
<!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"
                CacheExpirationPolicy="Sliding"
                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 метод извлекает данные из базовой базы данных, а затем снова кэширует данные.

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

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

Важно!

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

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

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