.htaccessでmod_expiresが使用されている場合、変更されたファイルはクライアントによってダウンロードされます

.htaccessでmod_expiresが使用されている場合、変更されたファイルはクライアントによってダウンロードされます

私は、Web サイトの応答時間を短縮するためにキャッシュを採用しようとしています。私が読んだほとんどのドキュメントでは、次のようにアクセス時から 1 か月後に有効期限を設定することを推奨しています。

ExpiresActive On
ExpiresByType text/css "access plus 1 month"

CSS ファイルを更新すると、クライアントが更新されたファイルを取得できないのではないかと心配しています。

ファイルが変更された場合に、クライアントがファイルの新しいバージョンをダウンロードするようにすることは可能ですか?

ご協力いただければ幸いです

答え1

あなたの懸念は正しいです。ブラウザでファイルを取得したクライアントは、ブラウザのキャッシュをクリアするか、ページを再読み込みしない限り、通常、ファイルにアクセスしてから 1 か月経過するまで更新されたバージョンを受信しません。

この問題を回避する方法の 1 つは、CSS ファイルを更新するときに、それを参照する HTML を変更して、リンク タグの href 属性の末尾 (つまり、.css の後) に ?v=2 または ?v=3 などを追加することです。ブラウザーはこれを一意の URL と見なし、新しいコピーをダウンロードしますが、サーバー上の同じ物理的な .css ファイルを指すことになります。

<link rel="stylesheet" type="text/css" href="/styles.css" />

なる

<link rel="stylesheet" type="text/css" href="/styles.css?v=2" />

関連情報