2011-01-18 8 views
7

私は、ブラウザがストリーミング方法を使用してロードされているPDFをキャッシュしないようにする方法を見つけようとしていました。Acrobar Reader 10.0(HTTP1.0/HTTP1.1)でPDFストリーミングを使用するときのキャッシングを防止する方法

次のヘッダーとうまく

FirefoxとChormeお得な情報や任意のPDFファイルをキャッシュしません:

Response.AddHeader(「プラグマ」、「キャッシュなし、無店舗を」); Response.AddHeader( "Cache-Control"、 "no-cache、no-store、must-revalidate、max-age = 0"); Response.AddHeader( "Expires"、 "-1");

(アクロバットリーダー9.4.1と)IE 7は、次のヘッダーでのみ動作し、PDFドキュメントのキャッシュを防ぐため、けれども:NO-、

Response.AddHeader(「プラグマ」、「キャッシュなし格納"); Response.AddHeader( "Cache-Control"、 "private、must-revalidate、max-age = 0"); Response.AddHeader( "Expires"、 "-1");

私はAcrobat Reader 10でIE 7を使用しようとしていましたが、上記のヘッダーは何も変わっていないし、何を試してもPDFをキャッシュしました。

キャッシュコントロール:no-cache、no-storeを入力しようとすると、pdfがまったく読み込まれませんでした。 私の理解によると、IEはキャッシュメカニズムを使用してPDFドキュメントを読み込みます。

PDF文書のキャッシュを防ぐのに役立つグローバルまたは特定の方法(たとえば、他のヘッダーを使用する方法)に精通している人はいますか?

答えて

0

パイプのキャッシュ設定を制御することは、馬鹿な証拠ではありません。別の方法は、PDFのファイル名にリアルタイムと日付をエンコードすることです。

+0

おかげで、任意の例? – Niv

0

時間の日付をPDFのファイル名にエンコードして、要求が行われるたびにファイル名が一意になるようにすることができます。

Response.AddHeader "Content-Disposition","attachment;filename=somename" + CurrentDate() + Currenttime() ".pdf"

CURRENTDATE ADN CurrentTimeを架空の関数です。あなたはそのコードを書く必要があります。

+0

このヘッダーを送信すると、ブラウザーからファイルのダウンロードを要求されます。私は "添付"の代わりに "インライン"を入れようとしたとき、それはまだキャッシュに保存されています。どのように私はそれをキャッシュせずにPDF文書をストリーミングすることができますについての任意の提案? – Niv

+1

私は、PDF文書をキャッシュしたくない理由は、毎回新しいPDFが生成されるようにするためだと考えました。今、あなたはそれがクライアントに格納されないようにしたいと思っています。 PDFをダウンロードして表示するJavaアプレットを作成し、ユーザーが終了したらPDFを削除することができます。サーバーはそれを暗号化し、アプレットは安全性を高めるために復号化を行うことができます。ここでは、Webページ内にPDFを表示できるJava PDFビューアの例を示します。http://www.gnostice.com/nl_article.asp?id=195&t=A_Java_PDF_Web_Viewer_-_Powered_By_PDFOne_(for_Java_trade;) – BZ1

+0

こんにちは、 ありがとうあなたの反応。 私はサードパーティーや外部コードを含まない罪を探しています。なぜブラウザ(またはacrobatプラグイン)が指定されたヘッダを無視するのかを理解しようとするだけです。 ご回答いただきありがとうございます。 – Niv

1

no-cacheヘッダーを使用してPDF(および他のドキュメントタイプ)をインラインで表示するこの問題は、Microsoft:http://support.microsoft.com/kb/316431にバグとして提出されています。 IEは、PDFをインラインで読むときに独自のキャッシュメカニズムを使用します。

残念ながら、M $の人々はこれが「設計どおりに動作する」と言っています。ユーザーはno-cacheヘッダーを使用すべきではありません。

あなたはJava PDFリーダーを使用するというVSUの考えを試すことができます...私はこのルートに行くかもしれません。

7

パスまたはクエリ文字列にURLに乱数を追加します。そうすれば、毎回ファイルがダウンロードされます。また、ファイルのmtimeを使用してファイルが変更された場合にのみ、番号を変更することもできます。

PHP(誰もが誰もがそれを好きではない場合でも、ことを理解しているので):

<a href="document.pdf?buster=<?= time() ?>">Download PDF</a> 
+0

これは、この種の問題のための最も洗練された回避策です。 – Grubsnik

+0

サーバー上のpdfに名前にスペースが含まれていると、これは機能しません。 – sskoko

+0

ファイル名にスペースがある場合、なぜ動作しませんか? – Robban1980

関連する問題