Stefan  DöringCaching Callback in ASP.NET 2.0


Wenn Caching aus dem Code angestoßen wird, ergibt sich ein Problem, sobald man ein Callback nutzen möchte, um sich benachrichtigen zu lassen, sobald ein das Cache Item invalide wird. Da die Seite selbst die Callbackmethode aus Gründen der nur sehr kurzen Lebenszeit selbiger nicht beinhalten kann muss ein Umweg gewählt werden über eine statische Callbackmethode, welche dann genutzt werden kann.

Folgender Code würde sich dann ergeben (simpler Fall für die Zwischenspeicherung eines Strings):

String newContent = "Neuer Labelinhalt (zwischengespeichert)";
 
protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        if (HelperClass.IsCacheRemoved)
            lblUpdate.Text = newContent;
    }
    else
    {
        Cache.Insert("Schluesselwert", "Cache Item", null,
            DateTime.Now.AddSeconds(1), TimeSpan.Zero,
            System.Web.Caching.CacheItemPriority.Default, 
            new CacheItemRemovedCallback(HelperClass.DeleteCallback));
    }
}

Die entsprechende Klasse enthält dann die Callback Methode, welche einen boolschen Wert setzt, der den Cache als abgelaufen kennzeichnet. Genau dieser boolsche Wert wird dann im Page_Load Ereignis der Seite abgefragt, um zu prüfen, ob eine Aktualisierung ausgeführt werden soll. An dieser Stelle wäre noch anzumerken, dass es sich sicherlich lohnen würde für die speziellen Caching Strategien beim Invalidieren des Cache-Items ein Nachladen anzustoßen, um die Daten auf Basis der Einstellungen aktuell halten zu können. Die "HelperClass" sieht dann wie folgt aus:

public class HelperClass
{
    static bool isCacheRemoved;
    public static bool IsCacheRemoved
    {
        get { return HelperClass.isCacheRemoved; }
        set { HelperClass.isCacheRemoved = value; }
    }
 
    public static void DeleteCallback(string key, object value, System.Web.Caching.CacheItemRemovedReason reason)
    {
        HelperClass.IsCacheRemoved = true;
    }


Kategorien: .Net;ASP.NET;C#;Web; 13.08.2008 09:41:27


 


Neuen Kommentar einfügen:

  Titel:   
  Name:
  E-Mail:
  Kommentar:

 
 


Kommentare




© Copyright 2008 ppedv AG