3

次のキャッシュの問題を解決するために何時間も努力しています。

私のアプリケーションの構造は次のとおりです(簡略化)。

  1. index.php-メインページ(さまざまな入力フィールド、送信ボタン、およびTCPDFを使用してPDFコンテンツを支払うためのiframeが含まれています)

  2. generate.php-指定されたPOSTパラメータに基づいてPDFファイルを生成し、ファイルをファイルシステムに保存します

  3. Viewer.php -PDFドキュメント(TCPDFライブラリ)を表示します。iframeはこのスクリプトをロードしてPDFファイルを表示します

ワークフローは非常に単純です。ユーザーはいくつかのオプションを選択し、メインページの送信ボタンをクリックします。選択されたパラメーターは、AJAXごとにPOSTによってgenerate.phpスクリプトに送信されます。スクリプトはPDFファイルを生成し、それをファイルシステムに保存します。最後に、新しく作成/編集されたファイル名を返します。ファイル名はAJAXコールバック関数でフェッチされ、AJAXコールバック関数は新しい/編集されたファイル名でiframeを更新します。

viewer.php?filename=NEW_OR_EDITED_FILENAME

すべてが機能していますが、ファイルが置き換えられると、新しいバージョンがハードドライブにあるにもかかわらず、ブラウザに古いpdfファイルが表示されることがあります(常にではありません)。私は次の解決策を試しました:

  1. index.phpおよびviewer.phpによって生成されたHTMLへのキャッシュを無効にするメタタグを追加します
  2. 次の方法でjQueryAJAX呼び出しのキャッシュを無効にします。jQuery.ajaxSetup({cache: false});
  3. filenameパラメータにランダムな文字列を追加します。

    Viewer.php?filename = FILENAME_RANDOMSTRING

次に、RANDOMSTRINGがスクリプトから削除され、ファイル名が抽出されます。これらの解決策はどれも私にはうまくいきませんでした。テストされたブラウザは、 Chrome25.0.1364.152およびFirefox19.0です。誰かがこれを手伝ってくれますか?前もって感謝します

4

2 に答える 2

2

同じ問題が発生しましたが、ランダムな文字列を追加すると、完全に機能します。

<iframe src="file.pdf?=<?=time();?>"></iframe>
于 2013-05-04T12:42:04.543 に答える
0

何時間も試した後、私が見つけた解決策は、毎回実際に新しいファイルを生成することです(ファイルの最後にあるランダムな文字列を削除せずに質問から解決策3)。その結果、データベースを更新し、変更のたびに古いファイルを削除する必要がありました。私の当初の意図はこれらの行動を回避することでしたが、残念ながら他の解決策は見つかりませんでした

于 2013-03-25T10:34:00.313 に答える