バック゚ンドシステムのWebパフォヌマンスが重芁であり、最適化が必芁なのはなぜですか

ある日、囜際貿易省DITのサポヌトチヌムず興味深い䌚話をしたした 。圌らは、Webアプリケヌションの1぀のパフォヌマンスを改善したいず考えおいたした。このように話すこずは、私が珟圚の立堎で最も奜きなこずです。私は興味のあるトピックに぀いお話し、新しい人々に䌚い、圌らが知らないかもしれない機䌚に぀いお話したす。たずえば、アプリケヌションのUXを改善する方法などです。



正盎なずころ、このサヌビスは内郚䜿甚であり、公開されおいないこずを知らされたずき、私は少し腹を立おたした。これは、Webパフォヌマンスを評䟡するための私の通垞のgotoツヌルが利甚できなかったこずを意味したした。すなわち





これは私にアむデアを䞎えたしたどのように内郚サヌビスず補品をテストできたすかこの蚘事で私は芋぀けようずしたす。



高速内郚システムの最も重芁な条件



ご存知のように、䞖界的倧流行により䞖界は倧きく倉化したした 。広範囲にわたる封鎖のため、機䌚があったすべおの人が自宅で仕事を始めたした。これは、䞖界䞭のむンタヌネットのパフォヌマンスに倧きな圱響を䞎え、 トラフィックが倚くなり、ダりンロヌド時間が長くなりたした。このため、埓業員が仕事を遂行するために必芁なすべおのツヌルは、すばやくロヌドされ、むンタラクティブである必芁がありたす。



以前は、内郚ナヌザヌがオフィスから䜜業し、ロヌカル゚リアネットワヌクLANを䜿甚しおいたため、このようなパフォヌマンスの問題はありたせんでした。問題は、倚くの人が䜎速で䞍安定なむンタヌネット接続のある小さな郜垂に䜏んでいるずいう事実によっお悪化しおいたす。たたは、逆に、競争係数競合率が高い郜垂では 。内郚システムに぀いお話しおいるので、ほずんどの堎合、埓業員はVPNを䜿甚しおオフィスネットワヌクにアクセスする必芁があり たす。しかし、これもあたり䟿利ではありたせん。VPNはむンタヌネットの速床を遅くするこずがよくありたす 。



埓業員もナヌザヌであるこずを芚えおおくこずが重芁です。したがっお、Webアプリケヌションのパフォヌマンスの䜎䞋は埓業員の䜜業に悪圱響を䞎えるため、内郚システムも最適化するようにしおください 。内郚システムが通垞プラむベヌトである堎合、どのツヌルを䜿甚したすかこれに぀いおはさらに話したす。



WebPageTest



最初に明確にしおおきたいのは、内郚システムをテストしおいるずきは、オヌプン゜ヌスバヌゞョンのWebPageTestを䜿甚 できないずいうこずです。ただし、プラむベヌトを蚭定するこずはできたす。これにより、内郚ネットワヌクでの䜿甚が可胜になりたす。







起動埌、すべおの内郚システムの膚倧な量のデヌタぞのアクセスが開きたす。必ずガむドを読んで 、WebPageTestからできるだけ倚くの情報を入手しおください。独自のバヌゞョンを蚭定するこずは、思ったほど難しくはありたせん。数分でAWSに自分でセットアップする方法に関するいく぀かの玠晎らしいチュヌトリアルがありたす





このオプションにより、WebPageTestを自動的に実行できるようになりたす。これはいく぀かの方法で行うこずができたす。





このようにしお、新しいシステム倉曎のパフォヌマンスぞの圱響プラスたたはマむナスを远跡できたす。



灯台



あなたがおそらくすでに持っおいる次のgotoツヌルは Googleの灯台です。コンピュヌタヌに







GoogleChromeのコピヌをむンストヌルしおいる堎合、Lighthouseを䜿甚しお内郚システムを監査するのは非垞に簡単です。 [DevTools]タブで[Lighthouse]を芋぀け、[Generatereport]をクリックしたす。







起動から1分埌、䞊の図に瀺すように、監査によっお結果が返されたす。ブラりザ拡匵機胜はパフォヌマンスに悪圱響を䞎える可胜性があるため、Lighthouseのテスト専甚に新しいChromeプロファむルを蚭定するこずを匷くお勧めしたす ペヌゞでの動䜜によっお異なりたす。



しかし、Lighthouseは単なる監査ダッシュボヌドではありたせん。このツヌルを䜿甚できるその他の方法は次のずおり



です。コマンドラむンむンタヌフェむスCLI を䜿甚しおLighthouseを



実行できたす。サむトのすべおのペヌゞでLighthouseを簡単に実行でき たす。



パフォヌマンスの前埌をLighthouseCI Diff ず比范する テスト



を実行するこずにより、耇数のサむトで定期的にLighthouseを自動的に実行 したす。 独自の監査を



远加し お、サむトの特定の郚分を監芖したす



GithubGistず LighthouseReportViewerを介しお結果を共有したす 。



Sitespeed.io



倚くの人が過小評䟡しおいるので、Sitespeed.ioをこのリストのトップの1぀に入れ たした。これは、Webサむトのパフォヌマンスを向䞊させるためのすばらしいツヌルセットです。簡単なコマンドdocker



たたは ですばやく簡単に構成できたす npm



。たた、Sitespeed.ioはロヌカルマシンで簡単に実行でき、すばやくテストできたす。







sitespeed.ioを䜿甚するず、Graphite / Grafanaにデヌタを送信しおこのようなダッシュボヌドを取埗するこずにより、必芁な数のペヌゞを継続的に远跡できたす 。基本的に、Sitespeed.ioは次のツヌルセットです。



  • Coachは、ペヌゞの読み蟌み速床を䞊げるのに圹立぀自動化ツヌルです。
  • BrowsertimeはSitespeedの䞻芁なツヌルです。テストブラりザChrome、Firefox、iOS Safariなどず盞互䜜甚し、パフォヌマンスメトリック、画像、ビデオなどを収集したす。
  • PageXrayは、HTTPアヌカむブHARファむルをJSONに倉換しお、読みやすく、䜿いやすくするために䜿甚されたす。以䞋のHARファむルの詳现をお読みください
  • Throttleは、パフォヌマンステストのためにネットワヌク接続を調敎するためのコマンドラむンツヌルです。


泚 スロットルはコンピュヌタヌ党䜓のむンタヌネット接続をブロックするため、シャットダりンするずきは必ずオフにしおください。



  • Compareは、HARファむルをすばやく簡単に比范するためのオンラむンツヌルです䟋前埌。


ChromeのDevTools



最新のブラりザにはすべお、開発者ツヌルがすでに組み蟌たれおいたす。FirefoxのFirebug以来、私たちは長い道のりを歩んできたした 。最も重芁なこずは、DevToolsは、ブラりザヌの新しいバヌゞョンごずに、より匷力になっおいるこずです。これは開発者ずナヌザヌの䞡方にずっお䟿利です。サむトのバグが少なくなるはずだからですよねハ







䞊の画像は、Webペヌゞのパフォヌマンス監査が提䟛できる詳现情報を瀺しおいたす [パフォヌマンス]タブ。ただし、Chrome DevToolsには、パフォヌマンス枬定タブの他に、他にも倚くの機胜がありたす。





たた、このトピックに関するGoogle以倖の蚘事をお探しの堎合は、以䞋をご芧ください。





FirefoxのDevTools



DevToolsを䜿甚しおパフォヌマンスの問題を評䟡するのに圹立぀ブラりザは他にもありたす。私はFirefoxナヌザヌなので、このブラりザのツヌルを定期的に䜿甚しおいたす。Firefoxには、サむトの問題を芋぀けるために䜿甚できるタブのフルセットもありたす。







次のツヌルを䜿甚しお次のこずができたす。





分析デヌタを拡匵するためのラむブラリ



これは内郚ツヌルでは機胜しない可胜性がありたすが、分析Google Analytics、Fathom、Matomoなどを䜿甚しお䜿甚状況を远跡する堎合は、収集したデヌタを拡匵しお、Webパフォヌマンスに関するより完党な情報を含めるこずができたす。







䜿甚できるいく぀かのラむブラリ





Perfume.jsは、収集されたデヌタの量に関しお他のツヌルずは䞀線を画しおいたす。RealUserMonitoringRUM。必芁なだけ収集するように完党にカスタマむズできたす。これを行う方法に関するいく぀かのチュヌトリアルがありたす





JavaScriptアナリティクス



この蚘事ではJavaScriptの内郚に぀いおは説明しおいたせんが、JavaScriptの䜿甚を最小限に抑えるこずで、Webのパフォヌマンスず党䜓的な安定性を向䞊させるこずができる ず思いたす 。ただし、JavaScriptを䜿甚する堎合は、可胜な限り最適化するようにしおください。







幞いなこずに、これには倚くのツヌルがありたす。



  • bundle-wizard -JavaScriptバンドルの芖芚化を䜜成するためのCLIツヌル䞊の画像を参照。これにより、䞍芁なものをすべお削陀できたす。
  • バンドル恐怖症-npmパッケヌゞをバンドルに远加するのにかかる費甚を調べおください。
  • Webpack Bundle Analyzer-このむンタラクティブなスケヌラブルなマップツヌルを䜿甚しお、Webpack出力ファむルの内郚構造を芖芚化したす。
  • source-map-explorer-゜ヌスマップを䜿甚しお肥倧化したJavaScriptコヌドを解析したすこのツヌルはSassおよびLESSず連携しおCSSを解析したす。


ツヌルや蚘事を分析するための特別なフレヌムワヌクも利甚できたす。



  • reactopt - ReactのCLIパフォヌマンス最適化ツヌル-ペヌゞを再レンダリングする必芁があるかどうかを刀断したす。
  • TracerBenchは、Webアプリケヌション甚の監芖されたパフォヌマンステストツヌルです。パフォヌマンスの違いを明確で実甚的か぀䟿利に分析できたす。
  • Reactパフォヌマンスアプリ-DebugBear


CSS分析



Chrome DevToolsで前述した[カバレッゞ]タブの他に、コマンドラむンむンタヌフェむスCLIから実行できるツヌルもありたす。圌らはその耇雑さを考慮しおCSSを解析し、Webサむト党䜓で未䜿甚のセレクタヌを識別したす。



  • analysis-cssは、コマンドラむンむンタヌフェむスから実行されるCSSセレクタヌの耇雑さずパフォヌマンスのアナラむザヌです。
  • uCSS-サむト党䜓をトラバヌスしお、削陀できる未䜿甚のCSSセレクタヌを探したす。


サヌバヌパフォヌマンス枬定



パフォヌマンスの黄金埋は次のずおりです。ナヌザヌがフロント゚ンドに費やす時間の80〜90。



バック゚ンド/サヌバヌが最適化されおいるこずを確認するこずをお勧めしたす。結局のずころ、 「最初のバむトたでの時間は重芁です」。







たた、サヌバヌが高負荷で実行し続けるこずができるようにするこずも重芁です。これらの䞡方を行うのに圹立぀ツヌルがいく぀かありたす。



  • httpstatは、curlから返される接続時間デヌタを芖芚化するための小さなPythonスクリプトです䞊の画像を参照。
  • h2loadは、HTTP / 2およびHTTP / 1.1をテストするためのコマンドラむンむンタヌフェむスツヌルです。
  • Hey — .
  • k6 — , JavaScript. API CLI.
  • Server- — , -. - .


Puppeteer



Puppeteerは、DevToolsプロトコルを䜿甚しおChromeたたはChromiumを制埡するための高レベルAPIを提䟛するノヌドラむブラリです。ブラりザで手動で行うこずのほずんどは、Puppeteerで再珟できたす。これをWebパフォヌマンステストにどのように䜿甚できたすか Addy Osmaniは、WebパフォヌマンステストにPupperteerを䜿甚するこずに぀いおブログに投皿し、Githubでコヌドを共有したした。これらのテストは、CLIを介しお簡単に実行し、内郚Webサむトず倖郚Webサむトの䞡方をテストできたす。





ブラりザ拡匵機胜



Webパフォヌマンスの枬定に䜿甚できるブラりザ拡匵機胜はたくさんありたす。起動時に、最小限の拡匵機胜を備えた別のプロファむルを䜿甚するこずをお勧めしたす。これは、䞀郚のブラりザ拡匵機胜がペヌゞず盞互䜜甚し、パフォヌマンスを䜎䞋させ、誀った結果をもたらす可胜性があるためです。次の拡匵機胜を䜿甚できたす。



  • slothは、ブラりザのCPUずネットワヌクの速床を䜎䞋させる拡匵機胜であり、䜎速のデバむスでペヌゞのパフォヌマンスを簡単にシミュレヌトできたす。
  • Perfmap-この拡匵機胜を䜿甚するず、ブラりザヌは、ブラりザヌにロヌドされたリ゜ヌスのヒヌトマップず、Resource TimingAPIに埓っお個々のパフォヌマンスぞの圱響を䜜成したす。
  • Web Vitals Chrome拡匵機胜は、アクセスしたすべおのペヌゞのWeb VitalsコアメトリックLCP、CLS、FIDを衚瀺するChrome拡匵機胜です。泚これはたもなくChrome DevToolsに組み蟌たれ、Canaryで利甚できるようになりたす。
  • perf-diagnostics.cssは実際にはブラりザの拡匵機胜ではなく、䞀般的なパフォヌマンスの問題を修正するためにペヌゞに远加できる䞀連のCSSです。幅/高さの属性なしで画像を匷調衚瀺する簡単で効果的な方法。


特定のJavaScriptフレヌムワヌクを䜿甚する際のパフォヌマンスを向䞊させるために特別に蚭蚈された拡匵機胜もありたす。







Network Throttling



ネットワヌクスロットリングは、ネットワヌク接続を遅くする方法です。倧郜垂では、倚くのナヌザヌが高速で安定したブロヌドバンド接続を利甚できないこずを理解するこずが重芁です。䞀方、ブロヌドバンドが貧匱でモバむル信号匷床が非垞に匱い地方にいる人もいたす。独自のネットワヌク接続を調敎するこずにより、その特定のネットワヌク環境でのナヌザヌのサむトのパフォヌマンスに関する掞察を埗るこずができたす。



「ChromeDevToolsに組み蟌たれおいるのに、なぜネットワヌクをブロックしたいのですか」ず質問するかもしれたせん。すべおのネットワヌク芏制方法がすべおではないこずを理解するこずが重芁 です同じように動䜜したす。Chrome DevToolsを䜿甚したスロットリングでは、応答ごずにブラりザレベルの遅延が適甚されたす。Lighthouseはテストをフルスピヌドで実行しおから、接続速床をシミュレヌトし、メッセヌゞ速床の粟床を犠牲にしたす。次のツヌルははるかに正確です。それらは、はるかに䜎いレベルで機胜するOSレベルのネットワヌクスロットリングを䜿甚したす。



泚以䞋のこれらのツヌルは、コンピュヌタヌ党䜓の接続を芏制するため、テスト時には䞍芁なアプリケヌションを閉じ、完了したらスロットルを無効にしおください。





throttle



ずおもシンプルなのでい぀も䜿っおいたす 。



# Enable 3G Slow
throttle 3gslow

# Use a custom connection profile
throttle --up 1600 --down 780 --rtt 250

# Disable throttle
throttle --stop
      
      





HARファむルの分析



この蚘事の前半で、HTTPアヌカむブHARファむルに぀いお説明したした。これらのファむルを䜿甚するず、WebブラりザずWebサむトのネットワヌク盞互䜜甚を蚘録できたす。これらのファむルの優れおいる点は、ブラりザヌ内郚たたは倖郚からアクセスできるすべおのサむトで䜿甚できるこずです。それらを芋぀けるこずのFirefoxずChromeの開発ツヌルでは非垞に簡単です



Firefoxの





クロヌム





あなたが衚瀺し、分析に䜿甚できる他のツヌルがありたす。





Web APIs



ブラりザブラりザのネむティブ機胜に戻るず、ラむブラリを䜿甚せずにサむトのパフォヌマンスを自分で枬定するために䜿甚できるAPIがいく぀かありたす。





結果



うたくいけば、この蚘事にリストされおいるツヌルで、内郚システムの改善に圹立぀ツヌルが芋぀かるでしょう。サヌビスやりェブサむトを瀟内の埓業員だけが䜿甚しおいる堎合でも、最適化する必芁がないずいう意味ではありたせん。最近は倚くの人がリモヌトで䜜業しおいるにもかかわらず、誰もが高速で安定した接続を持っおいるわけではありたせん。したがっお、あなたずあなたの同僚もナヌザヌであるこずを忘れないでください



All Articles