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


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. Значением по умолчанию является Absolute.

Примеры

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

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

Важно!

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

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

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