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'dur. 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 değeri 20 saniye olarak ayarlanır ve CacheExpirationPolicy özelliği varsayılan olarak değere ayarlandığındanAbsolute, 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 ardından verileri yeniden önbelleğe alır.

SqlDataSource Özellik olarak ayarlandığında ve özellik 0'dan büyük bir değere ayarlandığında true denetim verileri otomatik olarak önbelleğe EnableCaching alır ve CacheDuration 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şimi tarafından belirlenir. CacheExpirationPolicy özelliği değerine ayarlanırsaAbsolute, SqlDataSource ilk veri alma işlemindeki verileri önbelleğe alır, özelliği tarafından CacheDuration belirtilen süre boyunca en fazla bellekte tutar. Bellek gerekliyse veriler süre süresinden önce serbest bırakılabilir. Önbellek daha sonra sonraki işlem sırasında yenilenir. CacheExpirationPolicy özelliği değerine ayarlanırsaSliding, veri kaynağı denetimi ilk veri alma işleminde 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 DataReader ayarlanırsa ve önbelleğe alma da etkinleştirilirse SqlDataSource yöntemi tarafından Select 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ının güvenlik yapılandırmaları tarafından doğrulanmasını istiyorsanız, önbelleğe almayı kullanmayın.

Şunlara uygulanır

Ayrıca bkz.