SqlDataSource.CacheDuration Egenskap

Definition

Hämtar eller anger hur lång tid, i sekunder, som datakällans kontroll cachelagrar data som hämtas av Select(DataSourceSelectArguments) metoden.

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

Egenskapsvärde

Antalet sekunder som SqlDataSource cachelagrar resultatet av en Select(DataSourceSelectArguments) åtgärd. Standardvärdet är 0. Värdet får inte vara negativt.

Attribut

Exempel

Följande kodexempel visar hur du hämtar data från Northwind-databasen i Microsoft SQL Server och visar dem i en GridView-kontroll, med datacachelagring aktiverat. CacheDuration Är inställt på 20 sekunder och eftersom CacheExpirationPolicy egenskapen är inställd på Absolute värdet som standard ser användare av den här sidan nya data var 20:e sekund.

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

Kommentarer

Kontrollen SqlDataSource stöder datacachelagring. Medan data cachelagras Select hämtar metoden data från cacheminnet i stället för från den underliggande databasen. När cacheminnet upphör att gälla Select hämtar metoden data från den underliggande databasen och cachelagrar sedan data igen.

Kontrollen SqlDataSource cachelagrar automatiskt data när EnableCaching egenskapen är inställd på true och CacheDuration egenskapen anges till ett värde större än 0, vilket anger hur många sekunder cacheminnet lagrar data innan cacheposten tas bort. Värdet 0 anger en oändligt lång cache.

Beteendet för cachen bestäms av en kombination av varaktigheten CacheExpirationPolicy och egenskapen. Om egenskapen CacheExpirationPolicy är inställd Absolute på värdet SqlDataSource cachelagrar data vid den första datahämtningsåtgärden, håller den i minnet för den tid som anges av CacheDuration egenskapen som mest. Data kan släppas före varaktigheten, om minnet krävs. Cachen uppdateras sedan under nästa åtgärd. CacheExpirationPolicy Om egenskapen är inställd Sliding på värdet cachelagrar datakällkontrollen data vid den första datahämtningsåtgärden, men återställer tidsfönstret som den innehåller cachen för varje efterföljande åtgärd. Cacheminnet upphör att gälla om det inte finns någon aktivitet under en tid som är lika med CacheDuration värdet sedan den senaste Select åtgärden.

Kontrollen SqlDataSource kan endast cachelagrat data när den är i DataSet läge. Ett NotSupportedException undantag utlöses av Select metoden, om SqlDataSource kontrollen är inställd på DataReader värdet och cachelagring också är aktiverat.

Important

När du använder klientpersonifiering under Microsoft Windows authentication cachelagras data när den första användaren kommer åt data. Om en annan användare begär samma data hämtas data från cacheminnet. Data hämtas inte genom att göra ett nytt anrop till databasen för att verifiera användarens åtkomst till data. Om du förväntar dig att fler än en användare ska komma åt data och du vill att varje hämtning till data ska verifieras av säkerhetskonfigurationerna för databasen ska du inte använda cachelagring.

Gäller för

Se även