SqlDataSource.CacheDuration Propriedade

Definição

Obtém ou define o tempo, em segundos, que o controlo de fonte de dados armazena em cache os dados que são recuperados pelo Select(DataSourceSelectArguments) método.

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

Valor de Propriedade

O número de segundos em que armazena SqlDataSource em cache os resultados de uma Select(DataSourceSelectArguments) operação. A predefinição é 0. O valor não pode ser negativo.

Atributos

Exemplos

O exemplo de código seguinte demonstra como recuperar dados da base de dados Northwind em Microsoft SQL Server e exibi-los num controlo GridView, com a cache de dados ativada. O CacheDuration está definido para 20 segundos e, como a CacheExpirationPolicy propriedade está definida para o Absolute valor por defeito, os utilizadores desta página verão dados frescos a cada 20 segundos.

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

Observações

O SqlDataSource controlo suporta cache de dados. Enquanto os dados são armazenados em cache, o Select método recupera os dados da cache em vez de da base de dados subjacente. Quando a cache expira, o Select método recupera dados da base de dados subjacente e depois volta a armazenar os dados em cache.

O SqlDataSource controlo armazena automaticamente os dados em cache quando a EnableCaching propriedade é definida como true e esta CacheDuration é definida para um valor superior a 0, o que indica o número de segundos em que a cache armazena dados antes de a entrada da cache ser descartada. Um valor de 0 indica uma cache infinitamente longa.

O comportamento da cache é determinado por uma combinação da duração e da CacheExpirationPolicy propriedade. Se a CacheExpirationPolicy propriedade for definida para o Absolute valor, os SqlDataSource dados armazenam em cache na primeira operação de recuperação de dados, mantêm-nos na memória, no máximo, pelo tempo especificado pela CacheDuration propriedade. Os dados podem ser libertados antes do tempo de duração, se a memória for necessária. A cache é então atualizada durante a operação seguinte. Se a CacheExpirationPolicy propriedade for definida para o Sliding valor, o controlo de fontes de dados armazena em cache os dados na primeira operação de recuperação, mas reinicia a janela de tempo em que mantém a cache para cada operação subsequente. A cache expira se não houver atividade durante um tempo igual ao CacheDuration valor desde a última Select operação.

O SqlDataSource controlo só pode armazenar dados quando está em DataSet modo de armazenamento. Uma exceção é lançada pelo Select método, se o SqlDataSource controlo estiver definido para o DataReader valor e a NotSupportedException cache também estiver ativada.

Importante

Quando está a usar usurpação de cliente em Microsoft Windows authentication, os dados são armazenados em cache quando o primeiro utilizador acede aos dados. Se outro utilizador solicitar os mesmos dados, os dados são recuperados da cache. Os dados não são recuperados através de uma nova chamada à base de dados para verificar o acesso do utilizador aos dados. Se esperar que mais do que um utilizador aceda aos dados e quiser que cada recuperação dos dados seja verificada pelas configurações de segurança da base de dados, não use caching.

Aplica-se a

Ver também