SqlDataSource.CacheDuration Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el período de tiempo, en segundos, que el control de origen de datos almacena en memoria caché los datos recuperados por el método 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
Valor de propiedad
El número de segundos que el control SqlDataSource almacena en memoria caché los resultados de una operación Select(DataSourceSelectArguments). El valor predeterminado es 0. El valor no puede ser negativo.
- Atributos
Ejemplos
En el ejemplo de código siguiente se muestra cómo recuperar datos de la base de datos Northwind en Microsoft SQL Server y mostrarlos en un GridView control, con el almacenamiento en caché de datos habilitado. CacheDuration se establece en 20 segundos y, dado que la CacheExpirationPolicy propiedad se establece en el Absolute valor de forma predeterminada, los usuarios de esta página verán datos nuevos cada 20 segundos.
<%@ 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>
Comentarios
El SqlDataSource control admite el almacenamiento en caché de datos. Mientras los datos se almacenan en caché, el Select método recupera datos de la memoria caché en lugar de de la base de datos subyacente. Cuando expira la memoria caché, el Select método recupera los datos de la base de datos subyacente y, a continuación, vuelve a almacenar en caché los datos.
El SqlDataSource control almacena automáticamente en caché los datos cuando la EnableCaching propiedad se establece true
en y la CacheDuration propiedad se establece en un valor mayor que 0, lo que indica el número de segundos en que la memoria caché almacena los datos antes de que se descarte la entrada de caché. Un valor de 0 indica una caché infinitamente larga.
El comportamiento de la memoria caché viene determinado por una combinación de la duración y la CacheExpirationPolicy propiedad . Si la CacheExpirationPolicy propiedad se establece en el Absolute valor , almacena en caché los SqlDataSource datos de la primera operación de recuperación de datos, lo mantiene en memoria durante, como máximo, la cantidad de tiempo especificada por CacheDuration la propiedad . Es posible que los datos se libere antes del tiempo de duración, si se requiere memoria. A continuación, la memoria caché se actualiza durante la siguiente operación. Si la CacheExpirationPolicy propiedad se establece en el Sliding valor , el control de origen de datos almacena en caché los datos en la primera operación de recuperación de datos, pero restablece la ventana de tiempo que contiene la memoria caché para cada operación posterior. La memoria caché expira, si no hay ninguna actividad durante un tiempo que sea igual al CacheDuration valor desde la última Select operación.
El SqlDataSource control solo puede almacenar en caché los datos cuando está en DataSet modo. El método produce Select una NotSupportedException excepción, si el SqlDataSource control se establece en el DataReader valor y el almacenamiento en caché también está habilitado.
Importante
Cuando se usa la suplantación de cliente en la autenticación de Microsoft Windows, los datos se almacenan en caché cuando el primer usuario accede a los datos. Si otro usuario solicita los mismos datos, los datos se recuperan de la memoria caché. Los datos no se recuperan realizando otra llamada a la base de datos para comprobar el acceso del usuario a los datos. Si espera que más de un usuario acceda a los datos y desea que las configuraciones de seguridad de la base de datos comprueben cada recuperación a los datos, no use el almacenamiento en caché.