サーバー上の css ファイルを更新すると、多くのクライアント ブラウザーは、キャッシュされた古い css ファイルを使用してページをかなりの時間ロードし続けます。
多くの投稿を検索し、さまざまなアイデアをまとめた後、最もシンプルで安価なアプローチと思われるものを思いつきました.
css ファイルがリンクされている場合はhref
、次のように、ファイルの最終変更日のタイムスタンプを追加します。
<link rel="stylesheet" type="text/css" href="main.css?t=<?=filemtime('main.css')?>" />
私は CakePHP を使用しているので、レイアウト ファイルで行うことは次のとおりです。
<? $t = filemtime(CSS . 'main.css'); ?>
<?=$html->css("schedule.css?t={$t}") ?>
そのため、css ファイルへのリンクには最後に余分なタグがありますが、ファイルが変更されていない限り、同じままです。これは、ブラウザが通常どおりキャッシュできることを意味します。ただし、ファイルが変更されるとすぐにリンクが変更され、ブラウザーはすぐに動きます。
それでも、この方法では、意図しないものに何かを使用することに対して、少し汚れた感じが残ります. メッセージの内容が重要であるという意味で、その存在を識別する以外に、送信されている「メッセージ」は役に立ちません。
ここに私の質問があります:
- クライアントがブラウザーのキャッシュから古いスタイルシート (またはその件については JavaScript) を含む改訂された HTML を表示するリスクがあることを認めることができますか?
- これはハッキングですか、それとも正当な解決策ですか?
- より良い解決策はありますか?