2009-07-15 7 views
2

Ich habe eine Anwendung, die Downloads von Daten aus einer 3rd-Party um 3 Uhr morgens jeden Morgen nichts bis dahin in ihrem Inhalt verändert ...ASP.Net Caching

ist es möglich, die „Produktinformationen“ zwischenzuspeichern Seite bis dann? oder ist das etwas, das ich in global.asax einstellen sollte?

Antwort

2

Ja, Sie können es bis dahin zwischenspeichern. Es gibt viele Möglichkeiten, dies zu tun.

Wenn Sie einen serverseitigen Aufruf zum Abrufen der Daten haben, dann würde ich diese Daten einfach zum Cache hinzufügen, wenn Sie es zum ersten Mal abrufen, und den Ablauf auf 3 Uhr am nächsten Tag festlegen. Überprüfen Sie dann bei jedem Seitenaufruf den Cache für dieses Datenobjekt und initiieren Sie einen weiteren Abruf der Daten, wenn Null zurückgegeben wird.

Sie können auch Seitenausgabecaching verwenden, aber dies gibt Ihnen keine so detaillierte Kontrolle.

etwas wie folgt aus:

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! Ich hasse es, ein langsamer Typ zu sein :(das war, was ich machen würde :) –

1

Sie können es sich auf die Seite gesetzt. Im folgenden Code für diese Seite:

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

Eine weitere Option ist die System.Web.Caching.Cache Klasse. Jedes Mal, wenn Sie Ihre Daten laden, können Sie sie hier zwischenspeichern und dann bei Bedarf abrufen. Diese Klasse erlaubt zwar den Ablauf durch TimeSpan, aber da Sie die Daten zu einem bestimmten Zeitpunkt an jedem Tag herunterladen, spielt das keine Rolle.

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

Ich würde diese 3rd-Party-Daten alle 24 Stunden beibehalten. Caching hängt davon ab, was diese Daten sind. Ist es eine Datei, die weiter verarbeitet werden muss? Dann verarbeiten Sie es und zwischenspeichern es im Speicher. Und Ihr Failover geht so: In-Memory-Cache, permanenter Temp-Standort, Standort eines Drittanbieters.