データJSONが更新されない原因と解決方法(キャッシュ対策)

投稿日:

はじめに

KakuhanAppのフレーム検索機能では、JSONファイルから技のフレームデータを読み込んで表示しています。

ある日、JSONファイルを更新してデプロイしたにもかかわらず、ページに変更が反映されないという問題が発生しました。
HTMLの変更は反映されているのに、JSONだけが更新されないという状況です。

本記事では、この問題の原因となった「キャッシュ」と、その解決方法として実装した「バージョンクエリ」の仕組みについて解説します。


1. 発生した問題

フレームデータJSONファイルを更新してデプロイしたところ、ページ上では古いデータのまま表示され続けるという問題が発生しました。

一方で、HTMLの変更(例えば日付の表示など)は正常に反映されていました。

2. 原因の特定(キャッシュの仕組み)

原因は「ブラウザキャッシュ」でした。

JavaScriptでは以下のようにJSONを読み込んでいました。

 const res = await fetch(jsonPath); 

この場合、ブラウザは次のように判断します。

  • 同じURL → 同じファイル

  • すでに取得済み → キャッシュを使用

つまり、JSONを更新しても同じURLでアクセスしている限り、古いデータが使われ続けるのです。

3. 解決方法(バージョンクエリの導入)

この問題は「URLを変える」ことで解決できます。

そこで、以下のようにバージョンを付与しました。

const VERSION = "20260317-1";
const res = await fetch(`${jsonPath}?v=${VERSION}`); 

これにより、ブラウザは以下のように認識します。

  • framedata.json?v=20260317-1 → 別ファイル

  • framedata.json?v=20260317-2 → さらに別ファイル

結果として、キャッシュを使わず必ず最新データを取得するようになります。

おわりに

今回の問題は、「キャッシュ」というブラウザの仕組みによるものでした。

特に静的ファイルを扱う場合は、更新しても反映されないことがあるため注意が必要です。

バージョンクエリを付与する方法は、CSSやJavaScriptなど他の静的ファイルにも応用できます。


記事一覧に戻る

関連記事

【Django】viewsのデータをJavaScriptに渡すとエラーが出る原因と対処法 プログラミング
【Django】viewsのデータをJavaScriptに渡すとエラーが出る原因と対処法
【Django】設定フォルダの名前を変える2つの方法(プロジェクト作成時・既存プロジェクト) プログラミング
【Django】設定フォルダの名前を変える2つの方法(プロジェクト作成時・既存プロジェクト)
【Django】おすすめのディレクトリ構成 プログラミング
【Django】おすすめのディレクトリ構成
【Django】context_processorsとは?全テンプレートに共通変数を渡す方法 プログラミング
【Django】context_processorsとは?全テンプレートに共通変数を渡す方法
サイトマップとは? - Djangoでサイトマップを自動で作成する方法 プログラミング
サイトマップとは? - Djangoでサイトマップを自動で作成する方法

人気記事

はじめまして その他
はじめまして
閲覧数: 1166
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編) プログラミング
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編)
閲覧数: 1147
【Django】おすすめのディレクトリ構成 プログラミング
【Django】おすすめのディレクトリ構成
閲覧数: 595
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法
閲覧数: 595
X(旧Twitter)カードを正しく表示するためのHTMLの書き方 プログラミング
X(旧Twitter)カードを正しく表示するためのHTMLの書き方
閲覧数: 542

おすすめ記事

プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編) プログラミング
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編)
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法
複数ページの重複モデルを整理して保守性・拡張性を上げる プログラミング
複数ページの重複モデルを整理して保守性・拡張性を上げる
サイトマップとは? - Djangoでサイトマップを自動で作成する方法 プログラミング
サイトマップとは? - Djangoでサイトマップを自動で作成する方法
【Django】context_processorsとは?全テンプレートに共通変数を渡す方法 プログラミング
【Django】context_processorsとは?全テンプレートに共通変数を渡す方法

記事へコメントする

コメント一覧(0件)

関連記事

【Django】viewsのデータをJavaScriptに渡すとエラーが出る原因と対処法 プログラミング
【Django】viewsのデータをJavaScriptに渡すとエラーが出る原因と対処法
【Django】設定フォルダの名前を変える2つの方法(プロジェクト作成時・既存プロジェクト) プログラミング
【Django】設定フォルダの名前を変える2つの方法(プロジェクト作成時・既存プロジェクト)
【Django】おすすめのディレクトリ構成 プログラミング
【Django】おすすめのディレクトリ構成
【Django】context_processorsとは?全テンプレートに共通変数を渡す方法 プログラミング
【Django】context_processorsとは?全テンプレートに共通変数を渡す方法
サイトマップとは? - Djangoでサイトマップを自動で作成する方法 プログラミング
サイトマップとは? - Djangoでサイトマップを自動で作成する方法

人気記事

はじめまして その他
はじめまして
閲覧数: 1166
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編) プログラミング
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編)
閲覧数: 1147
【Django】おすすめのディレクトリ構成 プログラミング
【Django】おすすめのディレクトリ構成
閲覧数: 595
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法
閲覧数: 595
X(旧Twitter)カードを正しく表示するためのHTMLの書き方 プログラミング
X(旧Twitter)カードを正しく表示するためのHTMLの書き方
閲覧数: 542

おすすめ記事

プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編) プログラミング
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編)
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法
複数ページの重複モデルを整理して保守性・拡張性を上げる プログラミング
複数ページの重複モデルを整理して保守性・拡張性を上げる
サイトマップとは? - Djangoでサイトマップを自動で作成する方法 プログラミング
サイトマップとは? - Djangoでサイトマップを自動で作成する方法
【Django】context_processorsとは?全テンプレートに共通変数を渡す方法 プログラミング
【Django】context_processorsとは?全テンプレートに共通変数を渡す方法

記事へコメントする

コメント一覧(0件)

シェアする