#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.