10

キャッシュ内の CSS ファイルを更新するために、file.css?version=DDMMYYYY トリックをよく使用します。しかし、この方法について疑問があります。

私は古いエクストラネットで作業しています。すべてのページが同じ CSS ファイルを使用しています。エクストラネットにはテンプレート ファイルがなく、この CSS はエクストラネットのすべてのページに含まれています。すべてのエクストラネット ページについて、この css ファイルを更新する必要があります。

私の質問は: ログイン ページで file.css?version=DDMMYYYY トリックを使用したいです。他のページには引き続き file.css が含まれます (?version 部分は含まれません)。

ユーザーがログイン ページにアクセスすると、新しいバージョンの css ファイルを受け取ります。しかし、他のページではどのバージョンが使用されるのでしょうか? 古いバージョン (file.css) または新しいバージョン (file.css?version=DDMMYYYY) ?

言い換えれば、ユーザーがログインページに来たとき、どのファイルが彼のキャッシュにあるのか:

  • file.css および file.css?version=DDMMYYYY
  • 新しいバージョンに更新された file.css のみ

この初心者の質問で申し訳ありませんが、自分でテストするのは難しいです。

ご協力いただきありがとうございます!

4

3 に答える 3

9

ファイルがキャッシュされると、その後に と を含む完全な URL が表示されます?。キャッシュ ヘッダーはサーバーによって提供され、ブラウザーによって従われます。

本質的に

file.css?version=DDMMYYYY
および
file.css

ブラウザ用の 2 つの個別のファイルであり、接続はまったくありません。

すべてのページで一貫して新しい URL を使用することをお勧めします。

于 2012-12-20T17:05:46.543 に答える
3

これは機能せず、異なる方法でキャッシュされますが、ファイルシステム内の同じファイルであり、それらは異なる URI であり、サーバーの応答はまったく異なる可能性があります...したがって、file.cssキャッシュから古いファイルを同時にロードできますで正しいファイルを取得します。file.css?version=DDMMYYYYfile.cssfile.css?version=DDMMYYYY

これを防ぐ方法は、キャッシュを完全に無効にすることです。これにより、ページをロードするたびに css ファイルがダウンロードされますが、瞬時に更新されます。または、10 分などの短い時間でキャッシュが期限切れになるように設定することもできます。 、2時間なので、10分/2時間ごとにダウンロードされます...

htaccess を有効にして apache を使用している場合は、次のようにしてキャッシュを無効にすることができます。

<filesMatch ".(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>
于 2012-12-20T17:07:30.493 に答える
0

私のプロジェクトでは、ブラウザに新しいバージョンの CSS ファイルを取得させるために ?version アプローチも使用しています。?version=DDMMYYYY を使用する代わりに、filemtime() を使用することをお勧めします。

例:

<link rel="stylesheet" href="css/custom.css?<?php=filemtime('css/custom.css')?>" type="text/css" media="screen" />

関数 filemtime() はファイルの変更時刻を取得するため、CSS ファイルが変更されたときにブラウザーは新しいバージョンの CSS を取得します。ファイルが変更されていない場合、時刻は変更されず、ブラウザーはキャッシュされたバージョンのファイルを使用します。

于 2014-10-12T10:23:10.043 に答える