Aracılığıyla paylaş


SqlDataSource.CacheDuration Özellik

Tanım

Veri kaynağı denetiminin yöntemi tarafından Select(DataSourceSelectArguments) alınan verileri önbelleğe aldığı süreyi saniye cinsinden alır veya ayarlar.

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

Özellik Değeri

İşlemin SqlDataSource sonuçlarını Select(DataSourceSelectArguments) önbelleğe alan saniye sayısı. Varsayılan değer 0’dır. Değer negatif olamaz.

Öznitelikler

Örnekler

Aşağıdaki kod örneği, Microsoft SQL Server'daki Northwind veritabanından veri almayı ve veri önbelleğe alma etkin bir GridView denetimde görüntülemeyi gösterir. CacheDuration 20 saniye olarak ayarlanır ve CacheExpirationPolicy özelliği varsayılan olarak değere Absolute ayarlandığından, bu sayfanın kullanıcıları her 20 saniyede bir yeni verileri görür.

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

Açıklamalar

Denetim SqlDataSource , veri önbelleğe almayı destekler. Veriler önbelleğe alınırken yöntemi verileri Select temel alınan veritabanından değil önbellekten alır. Önbelleğin süresi dolduğunda yöntemi, Select temel alınan veritabanından verileri alır ve sonra verileri yeniden önbelleğe alır.

Özellik SqlDataSource olarak ayarlandığında ve CacheDuration özellik 0'dan büyük bir değere ayarlandığında denetim verileri otomatik olarak önbelleğe EnableCachingtrue alır ve bu da önbellek girdisi atilmeden önce önbelleğin verileri depoladığı saniye sayısını gösterir. 0 değeri sonsuz uzun bir önbelleği gösterir.

Önbelleğin davranışı, süre ve CacheExpirationPolicy özelliğin bir bileşimiyle belirlenir. CacheExpirationPolicy özelliği değerine ayarlanırsaAbsolute, SqlDataSource ilk veri alma işlemindeki verileri önbelleğe alır, en fazla özellik tarafından CacheDuration belirtilen süre boyunca bellekte tutar. Bellek gerekliyse veriler süre süresinden önce serbest bırakılabilir. Ardından önbellek sonraki işlem sırasında yenilenir. CacheExpirationPolicy özelliği değerine ayarlanırsaSliding, veri kaynağı denetimi ilk veri alma işlemindeki verileri önbelleğe alır, ancak izleyen her işlem için önbelleği tuttuğu zaman penceresini sıfırlar. Son Select işlemden bu yana değere eşit bir süre boyunca etkinlik yoksa önbelleğin CacheDuration süresi dolar.

Denetim SqlDataSource yalnızca moddayken DataSet verileri önbelleğe alabilir. NotSupportedException Denetim değere Select ayarlanırsa DataReader ve önbelleğe alma da etkinleştirilirse SqlDataSource yöntemi tarafından bir özel durum oluşturulur.

Önemli

Microsoft Windows kimlik doğrulaması altında istemci kimliğe bürünme özelliğini kullandığınızda, veriler ilk kullanıcı verilere eriştiğinde önbelleğe alınır. Başka bir kullanıcı aynı verileri isterse, veriler önbellekten alınır. Veriler, kullanıcının verilere erişimini doğrulamak için veritabanına başka bir çağrı yapılarak alınmaz. Verilere birden fazla kullanıcının erişmesini bekliyorsanız ve her veri alımının veritabanı için güvenlik yapılandırmaları tarafından doğrulanmasını istiyorsanız önbelleğe almayı kullanmayın.

Şunlara uygulanır

Ayrıca bkz.