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


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 значение, пользователи не увидят свежие данные, даже если 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 данные кэшируются, когда первый пользователь обращается к данным. Если другой пользователь запрашивает те же данные, данные извлекаются из кэша. Данные не извлекаются, вызывая другую базу данных, чтобы проверить доступ пользователя к данным. Если вы ожидаете, что несколько пользователей будут получать доступ к данным, и вы хотите, чтобы каждое получение данных проверялось конфигурациями безопасности для базы данных, не используйте кэширование.

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

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