Richtiger Weg, damit ASP.NET / IIS keine PDF-Dateien zwischenspeichert

8

Ich habe das folgende Szenario, und ich wollte Vorschläge, was der beste Weg ist, damit umzugehen. Meine Webanwendung (ASP.NET 2.0 / IIS 6) generiert PDF-Dateien und ich habe eine Ergebnisseite mit Links zu diesen PDFs.

Jetzt habe ich festgestellt, dass, wenn ich die Ergebnisseite besuche, auf eine PDF-Datei klicke (sie wird in einem neuen Fenster geöffnet), erzeuge die PDF-Datei neu und klicke auf den gleichen Link auf der Ergebnisseite, der OLD PDF wird angezeigt, anstelle des neuen. Ich musste die temporären Internetdateien löschen, um die neue zu sehen.

Also, da ich NICHT einen ASPX serviere, der tatsächlich das PDF schreibt (und ich möchte nicht, dass der Save-Dialog angezeigt wird), sondern direkt auf die PDF-Datei verlinke, möchte ich wissen, was der beste Weg ist Der Benutzer sieht immer die neueste Datei auf dem Server, keine zwischengespeicherte Version.

Ich denke, das Hinzufügen von No-Cache-Headern kommt nicht in Frage. Aber die PDF-Anfrage würde immer noch einen HTTP-Handler durchlaufen, also würde ich gerne wissen, ob ich einen bestimmten HTTP-Handler erstellen sollte, um Anfragen nach PDFs abzufangen, oder ob ich dies auf der IIS-Ebene machen sollte ... aber ich muss nicht möchte verhindern, dass ALLE PDFs auf dieser Site zwischengespeichert werden.

Irgendwelche Vorschläge? Vielen Dank im Voraus für die Hilfe.

    
GR7 22.11.2011, 20:52
quelle

3 Antworten

12

Wenn Ihr Link zu dem PDF-Dokument eine eindeutige Querystring angehängt hat, glaube ich, dass das Caching verhindert werden würde. Die Zeit in Ticks ist eine gute Zeit, zB:

%Vor%     
Neil Thompson 22.11.2011, 20:59
quelle
3

Ich hatte gerade ein ähnliches Problem. Ich habe meine Seite erlaubt Benutzern Daten einzugeben und neue PDF-Datei zu generieren Speichern geklickt. Die neue PDF-Datei überschreibt die alte. Wenn Benutzer in IE8 nach dem Speichern auf den PDF-Link klicken, wird immer das alte PDF angezeigt (der Benutzer muss den Cache löschen, um den neuen anzuzeigen). Nach stundenlanger Suche habe ich festgestellt, dass ich in IIS6 zu 'Output Caching' gehe, eine neue Cache-Regel mit der Dateierweiterung '.aspx' hinzufüge, dann unter beiden Optionen 'User-Mode Caching' und 'Kernel-Mode Caching' ankreuze , wählen Sie "Alle Zwischenspeichern verhindern". Das funktioniert für mich!

    
jsuen 15.05.2013 00:49
quelle
2

Die Tatsache, dass das Löschen Ihrer temporären Internetdateien Ihnen die neue Version gab, zeigt, dass der Browser die Quelle des Caches ist. Sie könnten das Zwischenspeichern ausschalten, aber das würde nicht verhindern, dass Proxies das Dokument zwischenspeichern. Wenn Sie 100% ig sicher sein müssen, dass der Benutzer diese neueste Version sieht, empfehle ich, einen Abfragezeichenfolgenwert zu verwenden, um zu bewirken, dass die URL anders aussieht. Die Abfragezeichenfolge könnte der Zeitstempel der PDF-Generierung sein.

    
Chris Felstead 22.11.2011 20:59
quelle