質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

パフォーマンス

コード効率の向上や計算に関する質問には、このタグを使ってください。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

1回答

1220閲覧

[パフォーマンス]2回目以降のリクエストの処理時間が短くなる理由が知りたい

mball

総合スコア7

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

パフォーマンス

コード効率の向上や計算に関する質問には、このタグを使ってください。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/09/11 09:02

もしご存知の方がいらっしゃったら教えていただきたいです!

###【知りたいこと】
複数のリクエストを飛ばすと、2回目以降のリクエストの処理時間が短くなる理由が知りたい

###【経緯】

  • Reactコンポーネント内で以下のような関数を定義した
  • 処理時間を確認すると、画像の通り1回目だけ処理に時間がかかっていることがわかった
  • Chromeの検証ツールのnetworkタブを開くと初回だけcontent downloadの時間が長い
  • 2回目以降は、1回目に取得したデータをChromeかどこかにキャッシュしているためcontent downloadの時間が短いと推測される
  • しかし、どういう仕組み(ReactなのかChromeなのかaxiosなのか)でキャッシュされているかわからないため、質問することにした

###【経緯の詳細】

  • Reactコンポーネント内で以下のような関数を定義した

javascript

1const fetchJSON = async () => { 2 const apiClient = axios.create({ 3 baseURL: "https://jsonplaceholder.typicode.com", 4 }); 5 6 console.time("request 5000 1st"); 7 const result1 = await apiClient.get("/photos"); 8 console.log("length: ", result1.data.length); 9 console.timeEnd("request 5000 1st"); 10 11 console.time("request 5000 2nd"); 12 const result2 = await apiClient.get("/photos"); 13 console.log("length: ", result2.data.length); 14 console.timeEnd("request 5000 2nd"); 15 16 console.time("request 5000 3rd"); 17 const result3 = await apiClient.get("/photos"); 18 console.log("length: ", result3.data.length); 19 console.timeEnd("request 5000 3rd"); 20 21 console.time("request 5000 4th"); 22 const result4 = await apiClient.get("/photos"); 23 console.log("length: ", result4.data.length); 24 console.timeEnd("request 5000 4th"); 25 26 console.time("request 5000 5th"); 27 const result5 = await apiClient.get("/photos"); 28 console.log("length: ", result5.data.length); 29 console.timeEnd("request 5000 5th"); 30};
  • 処理時間を確認すると、画像の通り1回目だけ処理に時間がかかっていることがわかった

コンソール画面

  • chromeの検証ツールのnetworkタブを開くと1回目だけcontent downloadの時間が長い

1回目
イメージ説明

  • 2回目以降は、1回目に取得したデータをchromeかどこかにキャッシュしているためcontent downloadの時間が短いと推測される

2回目
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

2回目以降は、1回目に取得したデータをChromeかどこかにキャッシュしているためcontent downloadの時間が短いと推測される

図を見る限り、2通りの可能性が考えられます。

  • 2回目の通信では「前に取得したものかどうか」のチェックだけを投げて、304 Not Modifiedの結果を得ている(キャッシュしている主体はChrome)
  • サーバ内でキャッシュ処理が行われていて、2回目は高速にデータを返してくる

どちらにしても、JavaScriptレベルでキャッシュを行っていれば通信自体が行われないので、JavaScriptレベルのキャッシュではありません。

投稿2021/09/11 09:14

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mball

2021/09/11 21:07 編集

ありがとうございます!現状2回目以降も304ではなく200が返ってくるので、後者が考えられます。 サーバ内でキャッシュしている場合、Chromeの検証ツールなどでわかったりできるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問