2009-07-15 4 views
2

Je Caching ai une application qui télécharge des données à partir d'une 3ème partie à 3h du matin tous les matins Rien ne change en termes de contenu jusque-là ...ASP.Net

est-il possible de mettre en cache la « Info produit » page jusque-là? ou est-ce quelque chose que je devrais définir dans global.asax?

Répondre

2

Oui, vous pouvez le mettre en cache jusque là. Il y a plusieurs façons de le faire.

Si vous avez un appel côté serveur pour extraire les données, alors j'ajouterais simplement ces données dans le cache quand vous l'obtiendrez pour la première fois et réglerais l'expiration à 3 heures du matin le jour suivant. Ensuite, sur chaque appel de page, vérifiez le cache de cet objet de données et, s'il renvoie null, lancez une autre extraction des données.

Vous pouvez également utiliser la mise en cache de la page, mais cela ne vous donne pas un tel contrôle détaillé.

quelque chose comme ceci:

if (HttpContext.Current.Cache["MyData"] != null) 
    return HttpContext.Current.Cache["MyData"] as DataObjectClass 

//Get data into dataobject 

HttpContext.Current.Cache.Add(
        "MyData", 
        DataObject, 
        DateTime (tomorrow 3am), // psuedo 
        null, 
        TimeSpan.Zero, 
        System.Web.Caching.CacheItemPriority.Normal, 
        null); 

return DataObject; 
+0

doh! Je déteste être un typer lent :(c'était ce que je vais faire :) –

1

Vous pouvez définir sur cette page elle-même. Dans le code derrière pour cette page:

Response.Cache.SetExpires("put tomorrow's date @ 3AM here"); 
Response.Cache.SetCacheability(HttpCacheability.Public); 
2

Une autre option consiste à utiliser la classe System.Web.Caching.Cache. Chaque fois que vous chargez vos données, vous pouvez les mettre en cache ici, puis les récupérer au besoin. Cette classe permet l'expiration par TimeSpan mais puisque vous téléchargez les données à une heure spécifique chaque jour cela n'a pas vraiment d'importance.

using System.Web.Caching; 
Public Class SomeClass 
{ 
    Public SomeDataCollection GetCachedData() 
    { 
     if(Cache["Key"] == null) //You want to always be sure to check if set 
     Cache["Key"] = GetDataCollectionFromSomewhere(); 

     return Cache["Key"]; 
    } 
} 
0

Je persisterais les données de tierces parties toutes les 24 heures. La mise en cache dépend de ce que sont ces données. Est-ce un fichier qui nécessite un traitement supplémentaire? Puis le traiter et le mettre en mémoire cache. Et votre basculement se passe comme suit: cache en mémoire, emplacement pers persistant, emplacement tiers.