Num dos últimos posts que fiz falei sobre duas opções de caching associadas ao controlo SqlDataSource. Hoje vou falar de uma terceira opção que reside na criação de uma entrada de cache controlada por um elemento do tipo CacheDependency. A classe CacheDependency permite-nos estabelecer um relacionamento entre um item contido na cache e um ou mais ficheiros (e/ou directórios). Um objecto do tipo CacheDependency armazena sempre um ou mais ficheiros (e/ou directórios) e automaticamente invalida o valor relacionado na cache se houver alguma alteração no(s) ficheiro(s) armazenado(s) nessa instância. O controlo SqlDataSource permite-nos estabelecer uma relação entre os dados obtidos a partir da base de dados e uma dependência definida por um objecto do tipo CacheDependency. O código seguinte ilustra o código que poderia dar inicio à criação da entrada na cache:
if(this.Cache["test"] == null )
{
CacheDependency dependency = new CacheDependency( this.MapPath( "empty.xml" ) );
this.Cache.Insert( "test", "", dependency );
}
Agora, só temos de configurar o nosso controlo SqlDataSource por forma a que este guarde os dados na cache:
<asp:SqlDataSource runat="server" ID="source" EnableCaching="true" CacheKeyDependency="test"
connectionstring="<%$ ConnectionStrings:northwindNormal %>"
SelectCommand="select customerid, contactname, contacttitle from customers"/>
A partir desta altura, os dados obtidos a partir da instrução SQL definida na operação SelectCommand ficarão na cache até que o(s) ficheiro(s) sejam modificados. Isto deve-se ao facto de termos definido o valor da propriedade CacheKeyDependency. Esta modificação irá invalidar a cache (incluindo os dados associados ao controlo SqlDataSource).
posted on Wednesday, February 09, 2005 11:07 PM