Haste vielleicht mal an nen anderen Ansatz gedacht?
Der Output Cache l�uft ja so - das die Seite angefordert wird - diese Validiert ob sie
noch g�ltig ist - und zeigt dann entweder sein Cache Abbild - oder l�dt sich komplett
neu!
Das w�re doch ein Ansatz!
- Definiere eine Globale Variable. (z.B.: DateTime LastModified)
- Dann schreibste ne Funktion die quasi das Datum des letzten Cachings (LastCaching)
der Seite/des Controls mit der Globalen Variable vergleicht!
- Wenn LastCaching nach LastModified liegt - dann soll die Seite den Cache benutzen
- Wenn LastCaching vor LastModified liegt - dann soll sich die Seite neu laden.
Zus�tzlich schreibste die DatenInsert/Updates/Deletes so - das diese nach der �nderung
diese Globale Variable (LastModified) neu setzen (also auf das aktuelle Datum)
Somit musste den Output Cache aller Seiten gar nicht neu setzen - sondern die machen
das von sich aus - indem sie validieren ob sie noch g�ltig sind!
Ich habe das ganze jetzt aber net getestet - aber ich denke dieser Ansatz m�sste
machbar sein.
Schau Dir auch mal das in der Hilfe an:
ms-help://MS.NETFrameworkSDKv1.1.DE/cpguidenf/html/cpconcachingpageoutputwithcachekeydependencies.htm
Da ist folgendes Beispiel drin:
Im folgenden Beispiel wird davon ausgegangen, dass eine Anwendung eine Komponente f�r
Temperaturangaben aufweist. Die Komponente verwendet die Cache.Insert-Methode, um eine
Temperaturangabe im Cache der Anwendung abzulegen.
[C#]
Cache.Insert("Temperature.CurrentTemperature", currentTemperature);
[Visual Basic]
Cache.Insert("Temperature.CurrentTemperature", currentTemperature)
Durch den folgenden Seitencode aus einem Codedeklarationsblock oder einer
CodeBehind-Datei wird die aktuelle, im Cache gespeicherte Temperatur abgerufen, in
eine Zeichenfolge konvertiert und anschlie�end angezeigt. Dann wird eine Abh�ngigkeit
zwischen der Version des Ausgabecaches und dem
Temperature.CurrentTemperature-Schl�ssel hergestellt. Von diesem Zeitpunkt an wird die
Seitenversion aus dem Ausgabecache gel�scht, sobald die Temperatur von der
Temperaturkomponente aktualisiert wird. Wenn die Seite erneut angefordert wird, wird
sie wieder im Ausgabecache abgelegt.
[C#]
int temperature = (int) Cache.Get("Temperature.CurrentTemperature");
LabelTemperature.Text = temperature.ToString();
Response.AddCacheItemDependency("Temperature.CurrentTemperature");
Das sollte so auch mit Deinem Beispiel funktionieren! Nur halt das Du auf das Datum
der Aktualisierung schauen musst!
-----Urspr�ngliche Nachricht-----
Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Bandt
Gesendet: Mittwoch, 8. September 2004 17:21
An: [EMAIL PROTECTED]
Betreff: AW: [Asp.net] Cache leeren
schade... aber das ist eigentlich genau die frage: wo packt er das hin?
> OK - Kommando zur�ck - habs getestet - das steht der net mit drin!
>
> -----Urspr�ngliche Nachricht-----
> Von: Pessner, Andreas
> Gesendet: Mittwoch, 8. September 2004 17:12
> An: '[EMAIL PROTECTED]'
> Betreff: AW: [Asp.net] Cache leeren
>
> Versuche mal den Script!
>
> <html>
> <head>
> <script language="C#" runat="server">
>
> void Page_Load(Object sender, EventArgs arg)
> {
> if(!IsPostBack)
> {
> String myTable = "<table
> border=1><tr><td>Key</td><td>Value</td></tr>";
> IDictionaryEnumerator myEnum = this.Cache.GetEnumerator();
> while(myEnum.MoveNext())
> {
> myTable += "<tr><td>" + myEnum.Key + "</td>";
> myTable += "<td>" + myEnum.Value + "</td></tr>";
> }
> myTable += "</table>";
> Response.Write("<h2> The Keys and Values of the
> 'Cache' object are: </h2>");
> Response.Write(myTable);
> }
> }
>
> </script>
> </head>
> <body MS_POSITIONING="GridLayout">
> </body>
> </html>
>
> Damit kannste kontrollieren - ob die Seiten auch im
> Page.Cache gespeichert werden - oder nicht! Wenn ja - dann
> kannste alle Elemente davon mit dem Script killen:
>
> System.Collections.IDictionaryEnumerator myEnum =
> Page.Cache.GetEnumerator();
> while(myEnum.MoveNext())
> {
> Page.Cache.Remove(myEnum.Key.ToString());
> }
>
> Aber wie gesagt - ich wei� net genau - ob der die Seiten da
> auch ablegt!
>
> -----Urspr�ngliche Nachricht-----
> Von: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Bandt
> Gesendet: Mittwoch, 8. September 2004 15:27
> An: [EMAIL PROTECTED]
> Betreff: AW: [Asp.net] Cache leeren
>
> Hallo an alle,
>
> die Varianten von Matthias und Andreas funktionieren zwar, aber
> leider nicht global. Was ich suche, ist ne M�glichkeit den Cache
> f�r die gesamte Applikation zu leeren...
>
> Gru�, Thomas
>
> > -----Urspr�ngliche Nachricht-----
> > Von: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] Im Auftrag von Matthias
> > Gesendet: Mittwoch, 8. September 2004 14:33
> > An: Glengamoi ASP. NET
> > Betreff: Re: [Asp.net] Cache leeren
> >
> > Hi Thomas, der folgende im Code Behind sorgt daf�r, dass die
> > Seite sofort neu geladen wird, wenn Du Sie mit
> > DeineSeite.aspx?Valid=False aufrufst. Ich erledige das immer
> > gleich nach dem Update mit einem Redirect.
> >
> > private void Page_Load(object sender, System.EventArgs e)
> > {
> > Response.Cache.AddValidationCallback(new
> > HttpCacheValidateHandler(CacheValidate), null)
> > }
> >
> > public void CacheValidate(HttpContext context, Object data,
> > ref HttpValidationStatus status)
> > {
> > if (context.Request.QueryString["Valid"] == "False")
> > {
> > status = HttpValidationStatus.Invalid;
> > }
> > else
> > {
> > status = HttpValidationStatus.Valid;
> > }
> > }
> >
> > Gru�, Matthias
> >
> > ----- Original Message -----
> > From: "Thomas Bandt" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Wednesday, September 08, 2004 12:13 PM
> > Subject: [Asp.net] Cache leeren
> >
> >
> > Hi,
> >
> > ich w�rde gerne meine Seiten via <%@ OutputCache %> cachen.
> > Da diese aber Inhalt aus ner Datenbank beziehen, und es f�r
> > den Redakteur ziemlich bl�d w�re, wenn er 30 Minuten warten
> > m�sste, bis sein Artikel erscheint, w�rde ich beim Updaten
> > der Inhalte auch gleichzeitig gern global den ASP.NET-Cache
> > killen.
> >
> > Ich hab' eben schon versucht auf die Cache-Collection h�ndisch
> > zuzugreifen, aber da scheint das Zeug ja nicht abgelegt zu
> > sein.
> >
> > Jemand ne Idee?
> >
> > Gru�, Thomas
> >
> >
> > _______________________________________________
> > Asp.net Mailingliste, Postings senden an:
> > [EMAIL PROTECTED]
> > An-/Abmeldung und Suchfunktion unter:
> > http://www.glengamoi.com/mailman/listinfo/asp.net
> >
> >
> >
> >
> >
> > _______________________________________________
> > Asp.net Mailingliste, Postings senden an:
> > [EMAIL PROTECTED]
> > An-/Abmeldung und Suchfunktion unter:
> > http://www.glengamoi.com/mailman/listinfo/asp.net
> >
> >
>
>
> _______________________________________________
> Asp.net Mailingliste, Postings senden an:
> [EMAIL PROTECTED]
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/asp.net
>
> _______________________________________________
> Asp.net Mailingliste, Postings senden an:
> [EMAIL PROTECTED]
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/asp.net
>
_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net
_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net