2010-03-11 3 views
2

dans mon application j'essaye d'implémenter le cache (ouput) mais il ne fonctionne pas bien, c'est-à-dire que c'est à chaque fois que l'on obtient du cache seulement c'est mon code.cache dans asp.net (sortie)?

<% @ OutputCache VaryByParam = "none" Emplacement = "client" Durée = "10" %>.

code:

protected void btn_Click(object sender, EventArgs e) 
    { 
     DataView dtv; 
     dtv = (DataView)Cache["mycache"]; 
     if(dtv ==null) 
     { 
      string sqry="select * from scrap"; 
      da=new SqlDataAdapter (sqry,con); 
      ds=new DataSet(); 
      da.Fill (ds); 
      dtv=new DataView (ds.Tables[0]); 
      Cache["mycache"]=dtv ; 
      Response.Write ("<script> alert ('from code')</script>"); 
     } 
     else 
     { 
      Response.Write ("<script> alert ('from cache')</script>"); 
     } 
     grd1 .DataSource =dtv; 
     grd1 .DataBind(); 
+0

chaque fois qu'il provient du cache uniquement. Si vous obtenez la solution, vous pouvez suggérer le code –

+0

Je ne suis pas sûr de comprendre. Voulez-vous dire que la page provient du cache de sortie à chaque fois ou que le DataView dtv est récupéré à partir de Cache ["mycache"] à chaque fois. – madcapnmckay

+0

il vient de dataview dtv, chaque fois que dtv n'est pas nul –

Répondre

2

Le OutputCache et la Page.Cache ne sont aucunement liés. Le fichier OutputCache met en cache le code HTML généré par la page et le renvoie au navigateur sans exécuter de nouveau le code (pendant 10 secondes, selon la configuration actuelle). Le Page.Cache fournit un mécanisme pour stocker des données à l'échelle de l'application. Une fois que quelque chose est ajouté à ce cache, il sera là jusqu'à la prochaine fois que vous redémarrerez votre site Web (sauf s'il est explicitement supprimé).

1

Oui, @klausbyskov a raison. Essayez d'utiliser la surcharge de la méthode Cache.Insert() avec l'argument d'expiration pour définir le délai d'attente sur les éléments du cache de données.