2

ダウンロードファイル(.pdf、.rar、.jpg、...)のサイトがあります。サーバーに大きな問題があり、apacheに関連していると思います。

たとえば、私はそれをダウンロードするために12.pdfにリンクしました:

<a href="12.pdf">book</a>

正常に動作しますが、問題があります。12.pdfを同じ名前の別のファイルに変更しました。新しい12.pdfをダウンロードすると、前のファイルがダウンロードされます。サーバーから12.pdfを削除し、ページでCtrl + F5を押しても、上記のリンクをクリックすると、12.pdfのダウンロードが開始され、ファイルのダウンロードが完全に完了します。サーバー上に12.pdf名のファイルは存在しません。問題は何ですか?apacheは私のリンクをキャッシュしますか?この問題をどのように解決しますか?私のサーバーOSはCentOSです。

4

1 に答える 1

7

いくつかの解決策は、順不同で、役立つかもしれません。

  1. ハッシュを作成します。

    より良いアプローチは、ファイルが変更されたときに変更されるハッシュを導入することによってファイルパス(または名前)を変更することです。次に、apache構成で、その値を削除して正しいファイルパス(または名前)を取得できます。こちらをご覧ください: https ://developers.google.com/speed/docs/best-practices/caching?hl = es-419#LeverageBrowserCaching

    http://www.immense.net/force-update-cached-files-images-favicon/#comment-18489経由

  2. サーバーヘッダー。キャッシングは、応答ヘッダーに基づいてサーバー側で制御することもできます。

    たとえば、ファイルを1日以内に強制的にキャッシュするには、次のように送信します。

    Cache-Control: max-age=86400, must-revalidate 
    

    ベータ版の場合、ユーザーに常に最新の情報を取得するように強制する場合は、次を使用します。

    Cache-Control: no-cache, must-revalidate
    

    https://stackoverflow.com/a/84846/1085891経由

  3. 変数を使用しGETます。バージョン番号、またはそのことに関する任意の値を追加します。これにより、ブラウザは最新のファイルを強制的にプルします。例:

    <a href="12.pdf?ver=1.1">book</a>
    

    多くの場合、ある時点でキャッシュが必要になる可能性のあるファイル(CSS、JavaScriptなど)にはこの手法をお勧めしません。

  4. <FilesMatch>指令

    ディレクティブに.htaccess行を含めます。<FilesMatch>たとえば、これらの行は、「。htm」または「.html」で終わるファイル名のキャッシュを防ぎ、JPEGファイルの通常のキャッシュを許可します。

    <FilesMatch "\.(htm|html)$">
      ExpiresActive On
      ExpiresDefault A1
      Header append Cache-Control must-revalidate
    </FilesMatch>
    

    http://support.tigertech.net/prevent-caching経由

資力

于 2013-02-17T12:50:50.443 に答える