web-dev-qa-db-ja.com

CSSファイルのブラウザーキャッシュ

CSSとブラウザに関する簡単な質問。 SOを検索してみたところ、同様の投稿がいくつか見つかりましたが、決定的なものはありませんでした。

Webプロジェクトで1つまたは2つのCSSファイルを使用します。これらは、WebページのHEADで参照されます。ページの1つにヒットすると、CSSはキャッシュされ、リクエストごとに再ダウンロードされないようになりますか。 、Firefox、Safariはこれを異なる方法で処理しますか?ブラウザーが閉じている場合、新しいブラウザーインスタンスが開かれる最初のアクセスでCSSが更新されますか?

62
jwalkerjr

あなたのファイルはおそらくキャッシュされます-しかしそれは依存します...

ブラウザによって動作が若干異なります-最も顕著なのは、サーバーから発生する曖昧な/制限されたキャッシングヘッダーを処理する場合です。明確な信号を送信すると、ブラウザは事実上常に従います。

最も大きな違いは、さまざまなWebサーバーとアプリケーションサーバーのデフォルトのキャッシュ構成にあります。

一部の(Apacheなど)は、ブラウザがそれらをキャッシュすることを奨励するHTTPヘッダーを持つ既知の静的ファイルタイプを提供する可能性が高い一方で、他のサーバーはno-cacheすべての応答を伴うコマンド-ファイルタイプに関係なく。

...

そのため、まず最初に、優れた HTTPキャッシングチュートリアル を読んでください。 コンテンツ発行者向けのHTTPキャッシングとキャッシュバスティング は、私にとって本当に目を見張るものでした:-)

次に、 Firebug および Live HTTP Headers アドオンをインストールしていじり、サーバーが実際に送信しているヘッダーを見つけます。

次に、Webサーバーのドキュメントを読んで、完全に微調整する方法を見つけます(または、システム管理者に相談してください)。

...

ブラウザの再起動時に何が起こるかについては、ブラウザとユーザー設定に依存します。

経験則として、ブラウザが再起動のたびにサーバーにチェックインする可能性が高く、何か変更があったかどうかを確認します( If-Last-Modified および If- None-Match )。

サーバーを正しく構成すると、スーパーショート 4 Not Modified (非常に少ない帯域幅のコスト)を返すことができ、その後、ブラウザーは通常どおりキャッシュを使用します。

60
Már Örlygsson

あなたの質問の最初の部分に-はい、ブラウザはCSSファイルをキャッシュします(これがブラウザの設定によって無効にされていない場合)。多くのブラウザには、キャッシュなしでページをリロードするためのキーの組み合わせがあります。 cssに変更を加え、ブラウザがキャッシュせずにファイルをリロードするときに次回待機するのではなく、すぐにそれらを表示したい場合は、次のようにURLにパラメーターを追加することでCSS irの処理方法を変更できます:

/style.css?modified=20012009
42
Deniss Kozlovs

Hrefにキャッシュを無効化するものを追加しない限り、CSSファイルとともに送信されたHTTPヘッダーに依存します。例えば.

<link href="/stylesheets/mycss.css?some_var_to_bust_cache=24312345" rel="stylesheet" type="text/css" />

一部のフレームワーク(Railsなど)は、これらをデフォルトで配置します。

ただし、 firebug または fiddler のようなものが表示された場合は、リクエストごとにブラウザがダウンロードしているものを正確に確認できます。これは、ブラウザisは、それがshouldを実行するのとは対照的に実行しています。

すべてのブラウザshouldは、キャッシュヘッダーを無視するように構成されていない限り、キャッシュヘッダーを同様に尊重します(ただし、例外にバインドされています)

7
DanSingerman

IEは@importメソッドを使用して他のcssファイルによって呼び出されたcssファイルをキャッシュしません。たとえば、htmlページがプルする「master.css」にリンクしている場合、 @importを介した「reset.css」で、reset.cssはIEによってキャッシュされません。

3
Andy Ford

それは、CSSファイルとともに送信するヘッダーによって異なります。おそらく手動で送信していないので、サーバー構成を確認してください。設定できるさまざまなキャッシュオプションについては、「httpキャッシュ」をGoogle検索してください。たとえば、ブラウザがファイルをロードするたびにブラウザにファイルの新しいコピーを強制的にダウンロードさせるか、ファイルを1週間キャッシュすることができます...

1
Jan Hančič

サーバーを台無しにしない限り、キャッシュされます。すべてのブラウザは同じように処理することになっています。一部の人々(私のような)は、ファイルをキャッシュしないようにブラウザーを構成している場合があります。ブラウザを閉じても、キャッシュ内のファイルは無効になりません。ただし、サーバー上のファイルを変更すると、ファイルが更新されます。

0
Al W