Partilhar via


SqlDataSource.CacheDuration Propriedade

Definição

Obtém ou define a duração, em segundos, em que o controle de fonte de dados armazena em cache os dados recuperados pelo método 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

Valor da propriedade

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

Atributos

Exemplos

O exemplo de código a seguir demonstra como recuperar dados do banco de dados Northwind no Microsoft SQL Server e exibi-los em um GridView controle , com o cache de dados habilitado. O CacheDuration é definido como 20 segundos e, como a CacheExpirationPolicy propriedade é definida como o Absolute valor por padrão, os usuários dessa página verão dados atualizados 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>

Comentários

O controle dá suporte ao SqlDataSource cache de dados. Enquanto os dados são armazenados em cache, o Select método recupera dados do cache em vez do banco de dados subjacente. Quando o cache expira, o Select método recupera dados do banco de dados subjacente e armazena os dados em cache novamente.

O SqlDataSource controle armazena dados automaticamente em cache quando a EnableCaching propriedade é definida true como e a CacheDuration propriedade é definida como um valor maior que 0, o que indica o número de segundos que o cache armazena dados antes que a entrada de cache seja descartada. Um valor de 0 indica um cache infinitamente longo.

O comportamento do cache é determinado por uma combinação da duração e da CacheExpirationPolicy propriedade . Se a CacheExpirationPolicy propriedade for definida como o Absolute valor , os SqlDataSource dados serão armazenados em cache na primeira operação de recuperação de dados e os manterão na memória para, no máximo, a quantidade de tempo especificada pela CacheDuration propriedade . Os dados poderão ser liberados antes do tempo de duração, se a memória for necessária. Em seguida, o cache é atualizado durante a próxima operação. Se a CacheExpirationPolicy propriedade for definida como o Sliding valor , o controle da fonte de dados armazenará dados em cache na primeira operação de recuperação de dados, mas redefinirá a janela de tempo em que ela mantém o cache para cada operação subsequente. O cache expira, se não houver nenhuma atividade por um tempo igual ao CacheDuration valor desde a última Select operação.

O SqlDataSource controle só pode armazenar dados em cache quando estiver no DataSet modo . Uma NotSupportedException exceção será gerada pelo Select método , se o SqlDataSource controle estiver definido como o valor e o DataReader cache também estiver habilitado.

Importante

Quando você estiver usando a representação do cliente na autenticação do Microsoft Windows, os dados serão armazenados em cache quando o primeiro usuário acessar os dados. Se outro usuário solicitar os mesmos dados, os dados serão recuperados do cache. Os dados não são recuperados fazendo outra chamada para o banco de dados para verificar o acesso do usuário aos dados. Se você espera que mais de um usuário acesse os dados e deseja que cada recuperação dos dados seja verificada pelas configurações de segurança do banco de dados, não use cache.

Aplica-se a

Confira também