私が理解しているように、これがブラウザのキャッシュの仕組みです。遠い将来のヘッダーが 1 年と言うように設定されており、foo.js がキャッシュされるように設定されているとします。以下にいくつかのシナリオを示します。
ページに最初にアクセスすると、サーバーは 200 を返し、foo.js は 1 年間キャッシュされます。
次回アクセスすると、ブラウザーはキャッシュをチェックしますが、foo.js が変更されているかどうかをサーバーでチェックする必要があります。そうでない場合、サーバーは 304 - Not Modified を返します。
ユーザーが既にページにいる (そして foo.js がキャッシュにある) リンクをクリックして別のページに移動すると、ブラウザーはキャッシュされたバージョンの foo.js を見て、サーバーへのラウンドトリップを行わずにそれを提供し、200 (キャッシュされた)。
ユーザーは既にページにアクセスしており (そして foo.js はキャッシュ内にあります)、何らかの理由で F5/Reload を押すと、ブラウザーはキャッシュをチェックしますが、サーバーへの往復を実行して foo.js が変更されているかどうかをチェックする必要があります。そうでない場合、サーバーは 304 を返します。
ご覧のとおり、ページが更新されるたびに、ファイルが変更されているかどうかを確認するために、常にサーバーにアクセスする必要があります。これはそれほど多くなく、サーバーはヘッダー情報のみを返しますが、場合によっては往復時間が非常に重要であることはわかっています。
問題は、ファイルの有効期限を既に設定しているため、これを回避できる方法があるかどうかです。有効期限が切れるまで、常にキャッシュからフェッチするか、ファイルを別のものに置き換える(バージョン管理する)ようにしたいだけです。