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