Partager via


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é

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 les afficher dans un GridView contrôle, avec la mise en cache des données activée. est CacheDuration défini 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 de nouvelles données 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 SqlDataSource contrôle prend en charge la mise en cache des données. Lorsque les données sont mises en cache, la Select méthode récupère les données du cache plutôt que 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 les met à nouveau en cache.

Le SqlDataSource contrôle met automatiquement en cache les données lorsque la EnableCaching propriété est définie sur true et que la CacheDuration propriété a une valeur supérieure à 0, ce qui indique le nombre de secondes pendant lesquelles le cache stocke les données avant que l’entrée du cache ne soit ignorée. 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 , le SqlDataSource met en cache les données lors de la première opération de récupération de données, les conserve en mémoire pendant, au maximum, 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é lors de 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 lors de la première opération de récupération de données, mais réinitialise la fenêtre de temps dans laquelle il contient le cache pour chaque opération suivante. Le cache expire, s’il n’y a pas d’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 valeur et que la DataReader mise en cache est également activée.

Important

Lorsque vous utilisez l’emprunt d’identité client sous l’authentification Microsoft 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 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 vous attendez à ce 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