SqlDataSource.CacheDuration Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.