Laden...

Client Caching deaktivieren

Erstellt von CBichler vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.931 Views
C
CBichler Themenstarter:in
11 Beiträge seit 2005
vor 17 Jahren
Client Caching deaktivieren

Hallo!

Ich habe in meiner ASP.NET App ein Problem mit dem Client Caching und zwar folgendes: Ich fordere von einem Web-Service Landkarten für bestimmte Koordinaten an und speichere diese als Bilddatei wobei als Name die Session-ID dient. Mein Problem ist jetzt das dieses File vom Browser gecached wird, d.h.
wenn ich eine neue Karte anfordere, wird die alte Karte verwendet, da ja bereits ein File mit dem gleichen Namen im Cache vorhanden ist.
Weiß jemand wie man in code dieses Browser Caching deaktivieren kann?

Würde mir echt helfen 😉
Danke

1.433 Beiträge seit 2006
vor 17 Jahren

Da müsstest Du schon fasst dem Browser mit einem Plug-In den Befehl geben beim Laden vorgängig den Cache zu leeren.

Ansonsten fällt mir auch nichts besseres ein.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
normalerweise

Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);

aber das verhindert nur das Cachen der Seite. Das Bild ist aber ein Extra-Request, weiß nicht obs dann funktioniert. Wenn Du Dein Bild nicht speicherst, sondern direkt über eine ashx-Datei auslieferst, kannst Du den Code aber in der ashx unterbringen.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

C
CBichler Themenstarter:in
11 Beiträge seit 2005
vor 17 Jahren

Erstmal Danke für die schnellen Antworten!

Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
Die Zeile funktioniert nicht, hab ich auch schon probiert, weil eben das Bild wie du schon gesagt hast ein Extra-Request ist.
Mit ashx Dateien bin ich leider nicht vertraut, wird mir aber wohl nichts anderes überbleiben

184 Beiträge seit 2005
vor 17 Jahren

Also meine Erfahrung ist, wenn man Caching deaktiviert (über META tags) werden auch die Bilder nicht gecached -- probier mal <meta http-equiv="cache-control" content="no-cache"> und <meta http-equiv="Pragma" content="no-cache"> direkt im Header deiner aspx seite.

Gruß
DCoder

P.S.: Wobei ich das Deaktivieren nicht empfehlen würde -- wahrscheinlich macht es mehr Sinn, das Bild nicht immer abzuspeichern sondern in einer seperaten Seite per Response an den Client zu schicken (dann wirst du auf keinen Fall Cache Probleme bekommen, Browserunabhängig), siehe Bilder dynamisch generieren (ASP.NET)

1.130 Beiträge seit 2005
vor 17 Jahren

Hallo CBichler,

häng einfach an den Namen des Bildes eine Zufallszahl (oder die aktuelle Uhrzeit).

Beispiel:

bild.jpg?4567283

Der Browser sollte das Bild dann nicht mehr cachen.

184 Beiträge seit 2005
vor 17 Jahren

Oder man benutzt gleich die Response Variante, dann muss man nicht permanent mit temp files rumhantieren

[EDIT]sry @.Kai - Merk grad, dass das keine temp file variante ist 😉 -- find die Response Lösung jedoch besser 😄[/EDIT]

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
da man ja eigentlich nur ein Bild zurückliefern will, braucht man hier nicht unbedingt eine Page, es reicht ein einfacher IHttpHandler:
ms-help://ms.netframework.v20.de/dv_ASPNETCon/html/90953da6-eb4e-438a-8d3b-1963ec5e5b4b.htm

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

C
CBichler Themenstarter:in
11 Beiträge seit 2005
vor 17 Jahren

ich hab mich jetzt für kais lösung entschieden..
manchmal seh ich echt vor lauter bäumen den wald nicht =)