SqlDataSource.CacheDuration Propiedad

Definición

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).Gets or sets the length of time, in seconds, that the data source control caches data that is retrieved by the Select(DataSourceSelectArguments) method.

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

Int32

El número de segundos que el control SqlDataSource almacena en memoria caché los resultados de una operación Select(DataSourceSelectArguments).The number of seconds that the SqlDataSource caches the results of a Select(DataSourceSelectArguments) operation. El valor predeterminado es 0.The default is 0. El valor no puede ser negativo.The value cannot be negative.

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 cómo mostrarlos en un GridView control, con el almacenamiento en caché de datos habilitado.The following code example demonstrates how to retrieve data from the Northwind database in Microsoft SQL Server and display it in a GridView control, with data caching enabled. CacheDurationSe 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 los datos nuevos cada 20 segundos.The CacheDuration is set to 20 seconds and, because the CacheExpirationPolicy property is set to the Absolute value by default, users of this page will see fresh data every 20 seconds.

<%@ 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.The SqlDataSource control supports data caching. Mientras los datos se almacenan en memoria caché, el Select método recupera datos de la memoria caché en lugar de hacerlo desde la base de datos subyacente.While data is cached, the Select method retrieves data from the cache rather than from the underlying database. Cuando expira la caché, el Select método recupera datos de la base de datos subyacente y, a continuación, vuelve a almacenar en caché los datos.When the cache expires, the Select method retrieves data from the underlying database, and then caches the data again.

El SqlDataSource control almacena automáticamente en memoria caché los datos cuando la EnableCaching propiedad está establecida en true y la CacheDuration propiedad se establece en un valor mayor que 0, lo que indica el número de segundos que la memoria caché almacena los datos antes de que se descarte la entrada de caché.The SqlDataSource control automatically caches data when the EnableCaching property is set to true and the CacheDuration property is set to a value greater than 0, which indicates the number of seconds that the cache stores data before the cache entry is discarded. Un valor de 0 indica una memoria caché infinitamente larga.A value of 0 indicates an infinitely long cache.

El comportamiento de la memoria caché viene determinado por una combinación de la duración y la CacheExpirationPolicy propiedad.The behavior of the cache is determined by a combination of the duration and the CacheExpirationPolicy property. Si la CacheExpirationPolicy propiedad se establece en el Absolute valor, almacena en memoria SqlDataSource caché los datos de la primera operación de recuperación de datos, los conserva en la memoria durante, como máximo, la cantidad de tiempo que se especifica mediante la CacheDuration propiedad.If the CacheExpirationPolicy property is set to the Absolute value, the SqlDataSource caches data on the first data retrieval operation, holds it in memory for, at most, the amount of time that is specified by CacheDuration property. Es posible que se liberen los datos antes del tiempo de duración, en caso de que se necesite memoria.The data might be released before the duration time, if the memory is required. La memoria caché se actualiza después durante la siguiente operación.The cache is then refreshed during the next operation. 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 el período de tiempo que contiene la memoria caché para cada operación subsiguiente.If the CacheExpirationPolicy property is set to the Sliding value, the data source control caches data on the first data retrieval operation, but resets the time window that it holds the cache for each subsequent operation. La caché expira, si no hay ninguna actividad para una hora que sea igual al CacheDuration valor desde la última Select operación.The cache expires, if there is no activity for a time that is equal to the CacheDuration value since the last Select operation.

El SqlDataSource control solo puede almacenar datos en caché cuando está en DataSet modo.The SqlDataSource control can cache data only when it is in DataSet mode. NotSupportedExceptionEl método produce una excepción Select , si el SqlDataSource control se establece en el DataReader valor y también se habilita el almacenamiento en caché.A NotSupportedException exception is thrown by the Select method, if the SqlDataSource control is set to the DataReader value and caching is also enabled.

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 obtiene acceso a los datos.When you are using client impersonation under Microsoft Windows authentication, the data is cached when the first user accesses the data. Si otro usuario solicita los mismos datos, los datos se recuperan de la memoria caché.If another user requests the same data, the data is retrieved from the cache. Los datos no se recuperan realizando otra llamada a la base de datos para comprobar el acceso del usuario a los datos.The data is not retrieved by making another call to the database to verify the user's access to the data. Si espera que más de un usuario tenga acceso a los datos y desea que cada recuperación de los datos sea comprobada por las configuraciones de seguridad para la base de datos, no utilice el almacenamiento en caché.If you expect more than one user to access the data, and you want each retrieval to the data to be verified by the security configurations for the database, do not use caching.

Se aplica a

Consulte también