0

これは他の多くの質問と非常に似ているように見えて申し訳ありませんが、私が見ることができるすべての関連投稿を見ましたが、私とまったく同じ問題を抱えているようには見えません;-)

問題は、.js、.css、およびイメージのクライアント側キャッシュを Apache2 サーバーから動作させることができないことです (Windows で Ubuntu Apache/2.2.8 と WAMP Apache の両方を使用しています)。

デフォルト設定では、適切な ETag スタイルのサーバー主導のキャッシュ (304 応答) が得られますが、Header Unset コマンドを仮想ホスト構成ファイルに入れてこれをオフにし、Caching ディレクティブ (以下を参照) で補足すると、うまくいきません。ブラウザによって尊重されているようです。

Firebug を使用すると、キャッシュされたファイルがさらに数時間有効であることをブラウザーが認識していることがわかりますが、とにかくそれを要求します。

これをデバッグする方法に関するヒントは大歓迎です。

ホスト構成の関連部分を以下に示します。

<VirtualHost *:80>
    DocumentRoot "C:/Projects/A2C/branches/CR7"
    ServerName *
    ServerAlias localhost ecomsvr0.dmclub.net
    ErrorLog "c:\log\a2c.log"
    CustomLog "c:\log\a2c-access.log" common
   <Directory "c:\projects\A2C\branches\CR7">
      Options Indexes FollowSymLinks MultiViews
      AllowOverride all
      Order allow,deny
      Allow from all
    ExpiresDefault A36000
    Header Set Cache-Control "max-age=7200"
    Header Unset Etag
    Header Unset Last-Modified
   </Directory>
</VirtualHost>
4

1 に答える 1

1

私を驚かせたのは、バリデーター (Last-Modified または ETag) を送信していないことです。必須ではありませんが、ブラウザが条件付きリクエストを実行できるようにするために、送信することを強くお勧めします。RFC 2616は、「HTTP/1.1 サーバーは、可能な限り Last-Modified を送信する必要がある」と述べています。これが問題の根本原因である必要はありませんが、そうである可能性があります。

そのため、「Header Unset Last-Modified」という行を削除して、もう一度確認することをお勧めします。

Expires はアクセス時間に 36000 秒を加えたものであるのに対し、max-age 時間は 7200 秒であることに注意してください。これは意味がありません。新しい Cache-Control ディレクティブを理解しているブラウザー (すべての新しいブラウザーが理解しています) は、max-age を使用します。

Last-Modified の追加が機能しない場合は、サーバーが送信する完全な応答ヘッダーを投稿していただけますか? たとえば、http://redbot.org/にアクセスして、サーバーに対してこのチェッカーを実行し、結果を投稿します。これは、問題を特定するのにさらに役立ちます。

于 2011-03-07T21:41:54.367 に答える