web-dev-qa-db-ja.com

Firefoxが画像とCSSをキャッシュしないのはなぜですか

IIS7を使用していますが、次の設定を既に行っています。しかし、Firefoxを実行すると、「履歴を記憶する」が設定されていても画像がキャッシュされないようです。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
    </staticContent>
  </system.webServer>
</configuration>

ただし、Firebugを使用する場合、Firefoxは画像とCSSをキャッシュしないことを示しています。

public,max-age=604800
Content-Type    text/css
Content-Encoding    gzip
Last-Modified   Mon, 27 Jun 2011 03:53:22 GMT
Accept-Ranges   bytes
Etag    "507968c27d34cc1:0"
Vary    Accept-Encoding
Server  Microsoft-IIS/7.5
X-Powered-By    ASP.NET
Date    Mon, 27 Jun 2011 13:06:41 GMT
Content-Length  5067
Request Headersview source
Host    www.xx.com
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept  text/css,*/*;q=0.1
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Referer http://www.xx.com/
Cookie  __utma=62996397.135679654.1309106351.1309159743.1309164158.8; __utmz=62996397.1309106351.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=62996397
3
Richard A

CSSファイルのリクエストURIは何ですか? Firefoxは、URIにクエリ文字列が含まれる場合(つまり、?の後にパラメーターが続く)、結果をキャッシュしません。

HTTP仕様によると、サーバーが明示的に許可しない限り、ブラウザはクエリ文字列を含むリクエストからのレスポンスをキャッシュすべきではありません。残念ながら、FirefoxとIEはこのルールに準拠していません。 IEはクエリ文字列に関係なくキャッシュしますが、Firefoxはキャッシュ制御ヘッダーに関係なくキャッシュしません。

2
  1. Etagヘッダーを削除します

  2. Cache-Controlヘッダーを使用して大きなmax-age値を設定します

  3. Expiresヘッダーを遠い将来の日付に設定します

IISを使用してこれを行う方法はわかりませんが、上記を行う場合、Firefoxは画像とキャッシュしたいその他のファイルをキャッシュする必要があります。

1
John Conde
  1. IISで静的コンテンツの圧縮を有効にしましたか?

  2. どうやら(この質問に従って: https://stackoverflow.com/questions/6420995/iis-7-x-static-compression-not-frequently-hit )IIS mayまれにしかアクセスされない場合、ファイルを圧縮しないことを決定します。私はこの点に関して何の問題も抱えていません-新しく作成されたファイルでさえもうまくいきました。

  3. より大きなmax-age値を使用します-30日以上(ただし、ファイルがキャッシュされるのを完全に防ぐためにキャッシュにそれほど影響を与えることはありませんが)。

0
LazyOne