Diesesmal geht es nicht um performance optimierung mit Caching, sondern wie man dieses explizit verhindert. Gerade mit AJAX oder Silverlight Webservice aufrufen bekommt man alte Ergebnisse präsentiert weil der Browser die Seite schlichtweg nicht noch einmal am Server anfordert.
Gesteuert wird dies per HTTP Header. Fiddler lässt sich das ganz gut darstellen.
In diesem Fall hat der Browser die Page noch einmal angefragt und vom Server eine 304 ( not modified) Meldung bekommen.
Im nächsten Beispiel erzwingt Heise Online das jedesmal der Werbecounter aufgerufen wird und auf keinen Fall der Browser das Ergebnis cachen darf.
Diese Header Information kann man im Code setzen
ASP
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
ASP.NET
Response.Cache.SetCacheability(HttpCacheability.NoCache)
HTML
Aus Kompatibilitätsgründen gibt es auch die Möglichkeit per Metatags den Browser anzuweisen wie Caching zu handhaben ist. Ich würde das aber nicht ungeprüft verwenden
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
IIS Webserver
Auch der Webserver hat die Möglichkeit Header Information bei jedem Response anzuhängen und so caching zu unterbinden.
Dies funktioniert in der MMC des IIS 6 auf Verzeichnisebene. Folgender Dialog zeigt wie man über hinzufügen den Header ergänzt.