SqlDataSource.CacheDuration Propriété

Définition

Obtient ou définit la durée, en secondes, de la mise en cache des données par le contrôle de source de données avant que celles-ci soient récupérées par la méthode 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

Valeur de propriété

Int32

Nombre de secondes durant lesquelles SqlDataSource met en cache les résultats d'une opération Select(DataSourceSelectArguments). La valeur par défaut est 0. La valeur ne peut pas être négative.

Attributs

Exemples

L’exemple de code suivant montre comment récupérer des données de la base de données Northwind dans Microsoft SQL Server et l’afficher dans un GridView contrôle, avec la mise en cache des données activée. La CacheDuration valeur est définie sur 20 secondes et, étant donné que la CacheExpirationPolicy propriété est définie sur la Absolute valeur par défaut, les utilisateurs de cette page verront les données nouvelles toutes les 20 secondes.

<%@ 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>

Remarques

Le contrôle prend en charge la SqlDataSource mise en cache des données. Bien que les données sont mises en cache, la Select méthode récupère les données du cache plutôt qu’à partir de la base de données sous-jacente. Lorsque le cache expire, la Select méthode récupère les données de la base de données sous-jacente, puis met à nouveau en cache les données.

Le SqlDataSource contrôle met automatiquement en cache les données lorsque la EnableCaching propriété est définie et que la CacheDuration propriété est définie sur une valeur supérieure à true 0, ce qui indique le nombre de secondes pendant lesquelles le cache stocke les données avant l’abandon de l’entrée du cache. La valeur 0 indique un cache infiniment long.

Le comportement du cache est déterminé par une combinaison de la durée et de la CacheExpirationPolicy propriété. Si la CacheExpirationPolicy propriété est définie sur la Absolute valeur, les SqlDataSource données sont mises en cache sur la première opération de récupération de données, la conserve en mémoire pour, au plus, la durée spécifiée par CacheDuration la propriété. Les données peuvent être libérées avant la durée, si la mémoire est nécessaire. Le cache est ensuite actualisé pendant l’opération suivante. Si la CacheExpirationPolicy propriété est définie sur la Sliding valeur, le contrôle de source de données met en cache les données sur la première opération de récupération de données, mais réinitialise la fenêtre de temps qu’elle contient le cache pour chaque opération ultérieure. Le cache expire, s’il n’existe aucune activité pendant une durée égale à la CacheDuration valeur depuis la dernière Select opération.

Le SqlDataSource contrôle peut mettre en cache les données uniquement lorsqu’elles sont en DataSet mode. Une NotSupportedException exception est levée par la Select méthode, si le SqlDataSource contrôle est défini sur la DataReader valeur et la mise en cache est également activée.

Important

Lorsque vous utilisez l’emprunt d’identité client sous Microsoft Authentification Windows, les données sont mises en cache lorsque le premier utilisateur accède aux données. Si un autre utilisateur demande les mêmes données, les données sont récupérées à partir du cache. Les données ne sont pas récupérées en effectuant un autre appel à la base de données pour vérifier l’accès de l’utilisateur aux données. Si vous attendez que plusieurs utilisateurs accèdent aux données et que vous souhaitez que chaque récupération des données soit vérifiée par les configurations de sécurité de la base de données, n’utilisez pas la mise en cache.

S’applique à

Voir aussi