Archive for the 'ASP.NET-Snippet' Category

#ASP.NET-Snippet: Textdatei nicht ständig neu laden müssen

Die Aufgabenstellung: Es soll der Inhalt einer Textdatei in ein Literal eingebunden werden, um auf diese Art einen einfachen Newsticker zu realisieren.

Das Problem: Der Inhalt wird bei jedem Request neu geladen. Deshalb gibt es potentiell Performance-Probleme.

Die Lösung: Den ASP.NET-Cache verwenden. Hier können die Daten für einen gewissen Zeitraum zwischengespeichert werden und müssen somit nicht bei jedem Request neu geladen werden.

Die Umsetzung:

lock(GetType())
{
   // News aus dem Cache holen
   String content === Cache["news"] as String;
 
   // News gefunden?
   if(null == content)
   {
      // News waren nicht im Cache, also nachladen
      content = File.ReadAllText();
 
      // Unter dem Schlüssel "news" für zehn Minuten in den
      // Cache packen, danach fliegen sie automatisch wieder raus
      Cache.Insert(
         "news", content, null,
          DateTime.Now.AddMinutes(10), TimeSpan.Zero);
   }
 
   // News ausgeben
   .Text = content;
}

Wenn es sein muss, kann zusätzlich noch eine CacheDependency verwendet werden, um das Objekt sofort aus dem Cache zu nehmen, wenn sich die Datei geändert hat.