Netlifyの最適化


私はNetlifyでは動作しませんが、1つのページのアプリケーションの負荷時間を改善する方法を示します.
ログインするhttps://netlify.com .

あなたはhttps://app.netlify.com ログイン後.これは最適化されるスパです.

<高橋潤子>
絹篩で篩うたようPerformance パネル
確認するScreenshot オプションを選択すると、アプリケーションが読み込まれたときにチェックするのに便利です

録音を開始し、ページをリフレッシュします.ページが読み込まれたときに録音を停止します.私たちはDevToolsは、タイムラインを表示するために分離モードで開きます.

ネットワークセクションの詳細については、ネットワークコールのように見えますapi.netlify.com/api/v1/user が複製される.api.segment.io/v1/p も複製されますが、それはあまり面白くありません.

DevToolsのネットワークパネルに行って詳細を確認しますuser API.

さて、両方の呼び出しの呼び出しスタックをチェックします.


両方の呼び出しスタックは、1つの違いとかなり類似しているように見えます.
- App.js:432
+ App.js:459
同じファイルの行が異なる:

私たちは幸運なNetlifyはソースマップをパブリックで有効にしています.
第一useEffect は、この時間では初めてアプリの負荷を実行するためのものですuserId が定義されていない.
二番目useEffect が再び実行されますuserId が定義されていない.しなければなりません.
useEffect(() => {
  if (userId) {
    load(props);
  }
}, [userId]);
これはAPI呼び出しが2回行われるのを修正します.
今タイムラインに戻って、私はアプリの負荷時間を改善するための機会を参照してください.

メインスレッドのようなルックスは、ネットワークコールが行われている間はあまり行われません.現在のプロセスはシリーズにあります:JavaScriptが走るこのコードはいくつかのネットワーク呼び出しを作ります.ネットワークコールは別のスレッドでブラウザで処理されるので、パラレルでこれらを行うことができます.
これを行うには通常、コードをビルドするためのソースが必要ですがChrome Local Overrides .
メインHTMLファイルがありますoverview とメインjsファイルapp.bundle.js 私のローカルコピーで上書きされます.

私はAPIコールを短絡する場所を見つけましたuser :

これを更新
  user() {
    return window.userPromise || this.request('/user');
  }
ここで定義しますwindow.userPromise メインAPIファイルでは、このAPIの呼び出しができるようにします.私たちは新しい<script> タグを追加/user APIはローカルストレージから正しいアクセストークンを呼び出します.

そして、それは動作します、我々は現在、主なJavaScriptコードが走るように、平行にページの始めでAPI呼び出しをします.

しかし、アプリケーションのレンダリングをブロックしている2つ以上のネットワークコールは、同じ方法でそれらを最適化しましょう.

我々は今、忙しいメインスレッド、ネットワークコールとJavaScriptコードを並列に実行されている.

私のシステムとネットワークのために、私はアプリの負荷時間の約40 %の削減を2000 msから1200 msまで見ることができました.
これは、Webパックのようなバンドルシステムを使用してスパで一般的なシナリオです、APIの呼び出しは、コードが実行された後に行われます.初期APIの呼び出しは、Webアプリケーションの多くのためのアプリケーションの負荷時間を改善するための簡単な方法です.