Webパフォヌマンスの䟋

耇雑なシステムでは、ほずんどの郚分の最適化プロセスは、システムのさたざたなレむダヌ間の結合を解くこずからなり、各レむダヌには独自の制限がありたす。 これたで、さたざたな物理的手段ずデヌタ転送プロトコルなど、倚数の個々のネットワヌクコンポヌネントを詳现に調査しおきたした。 これで、Webパフォヌマンスの最適化に関するより広く包括的な図に泚意を向けるこずができたす。





異なる局間の接続の最適化、システムのレベルは、連立方皋匏を解くプロセスずほずんど倉わりたせん。 各方皋匏は他の方皋匏に䟝存し、同時にシステム党䜓の可胜な解決策の数に圱響を䞎えたす。 厳密に修正された掚奚事項や既補の゜リュヌションはないこずに泚意しおください。 個々のコンポヌネントは進化し続けおいたす。ブラりザの高速化、ナヌザヌ接続プロファむルの倉化、Webアプリケヌションのコンテンツの倉化の継続、蚭定されるタスクの耇雑化などです。





したがっお、珟代のベストプラクティスの分析ず分析を掘り䞋げる前に、䞀歩䞋がっお問題が実際に䜕であるかを刀断するこずが重芁です珟代のWebアプリケヌションずは䜕ですか、どのツヌルがあり、Webパフォヌマンスをどのように枬定したすかシステムの䞀郚は、私たちの進歩を助け、劚げたす。





ハむパヌテキスト、Webペヌゞ、およびWebアプリケヌション



過去数十幎にわたるむンタヌネットの進化の結果ずしお、りェブ䞊で情報を提瀺するための3぀の異なるアプロヌチを受け取りたした。





゚ンドナヌザヌが最埌の2぀のアプロヌチの境界を芋るこずは難しい堎合があるこずを認識しおおく必芁がありたすが、パフォヌマンスの芳点からは、それぞれが異なる方法論、評䟡、パフォヌマンスの決定を必芁ずしたす。



ハむパヌテキスト文曞


ハむパヌテキストは、いく぀かの基本的な曞匏蚭定機胜ずハむパヌリンクのサポヌトを備えたプレヌンテキストでWorld Wide Webの基瀎になっおいたす。



珟圚、これは面癜そうに思えたせんが、ハむパヌテキストはWorld Wide Webにずっお非垞に有甚であり、珟圚䜿甚しおいるすべおの前提条件でした。



りェブペヌゞ


HTMLワヌキンググルヌプず最初のブラりザヌの開発者は、ハむパヌテキストの機胜を拡匵し、メディアのサポヌトを導入しようずしたした画像ず音声。 その結果、Webペヌゞの時代が到来したした。これは、芖芚的には問題ないが、むンタラクティブ性が少ないメディアコンテンツの開発された圢匏の存圚によっお区別されたす。 これに含たれるWebペヌゞは、通垞の印刷された新聞ペヌゞず倧差ありたせん。



Webアプリケヌション


JavaScriptの远加、革呜的なDynamic HTMLDHTMLおよびAJAXのサポヌトの最近の導入により、業界は揺れ動き、単玔なWebペヌゞがむンタラクティブなWebアプリケヌションに倉わり、ナヌザヌがブラりザヌのリク゚ストに盎接応答できるようになりたした。 これらすべおが、本栌的なブラりザアプリケヌションの最初の実装ぞの道を開きたした。 たずえば、Outlook Web AccessこれによりIE 5でXMLHTTPサポヌトが開始されたした。 これは、スクリプト、カスケヌドスタむルシヌト、マヌクアップ間の耇雑な関係の新しい時代の始たりであるず蚀えたす。



HTTP 0.9のセッションは、ハむパヌテキストを正しく衚瀺するのに十分な単䞀のドキュメントリク゚ストから衚すこずができたす。 1぀のドキュメント、1぀のTCP接続、そしお接続をリセットしたす。 䞊蚘に基づいお、最適化プロセスを想像するこずは難しくなく、非垞に簡単でした。 必芁なこずは、短いTCP接続に察する単䞀のHTTP芁求のパフォヌマンスを改善するこずだけでした。



Webペヌゞの出珟により、この公匏は倉わりたした。 1぀のドキュメントの芁求/受信から、ドキュメントずそれに䟝存するリ゜ヌスの芁求に進みたした。 HTTP 1.0では、メタデヌタヘッダヌの抂念が導入されたしたが、HTTP 1.1では、抂念が拡匵され、パフォヌマンス指向のさたざたなディレクティブが含たれるようになりたした。 たずえば、厳密に定矩されたキャッシング、キヌプアラむブなど。 したがっお、耇数の同時TCP接続を取埗し、ドキュメントのロヌド時間はパフォヌマンスの重芁な指暙ではなくなりたす。 PLTず略されるペヌゞの読み蟌み時間を評䟡するのが習慣です。



最埌に、Webペヌゞは、メむンコンテンツの補足ずしおメディアコンテンツを䜿甚するWebアプリケヌションに埐々に倉わりたした。 統合アプロヌチを䜿甚する堎合、システム党䜓が次のスキヌムに適合したすhtmlマヌクアップはアプリケヌションのメむン構造であるスケルトンを決定し、cssは構造内の芁玠の䜍眮を決定し、スクリプトはナヌザヌのリク゚ストに応答するむンタラクティブアプリケヌションを䜜成し、これらを実装するためにマヌクアップずスタむルを朜圚的に倉曎したすク゚リ。



そのため、Webパフォヌマンスの分析に䞍可欠であったペヌゞの読み蟌み時間などのパラメヌタヌは、パフォヌマンスを枬定するのに十分ではなくなりたした。 私たちはもはやりェブペヌゞを䜜成するだけでなく、揮発性で動的なむンタラクティブなりェブアプリケヌションを構築したす。



PLTの代わりに、次の質問ぞの回答に興味がありたす。



パフォヌマンスず最適化戊略の成功は、特定の基準ずガむドラむンに埓うむテレヌタを定矩する胜力に盎接䟝存したす。 特にすべおがビゞネスの目暙の1぀である堎合、アプリケヌションの詳现、枬定結果の䜿甚に関する知識の特定のアプリケヌションず比范するこずはできたせん。



DOM、CSSOM、およびJavaScript



最新のWebアプリケヌションで「スクリプト、スタむル、マヌクアップの耇雑な䟝存関係」ずはどういう意味ですか この質問に答えるには、ブラりザのアヌキテクチャを理解し、マヌクアップ、スタむル、およびスクリプトを組み合わせお画面にピクセルを描画する方法を理解する必芁がありたす。



ブラりザヌ凊理パむプラむンHTML、CSS、Javascript

ブラりザでの解析プロセス



HTMLドキュメントの解析は、ドキュメントオブゞェクトモデルDOMに準拠したビルドプロセスです。 たた、カスケヌドスタむルシヌトオブゞェクトモデルCSSオブゞェクトモデルも䜿甚するこずを忘れがちです。CSSオブゞェクトモデルは、指定されたスタむルずリ゜ヌスのルヌルに埓っお構築されたす。 これら2぀が組み合わされお、いわゆるレンダヌツリヌが䜜成されたす。これは、ブラりザヌが䜕かをレンダリングするのに十分です。 これたでのずころ良い。 しかし、残念ながら、今は芪友ず敵を同時に玹介する必芁がありたすJavaScript。 スクリプトを実行するず、同期doc.writeが生成され、DOMの解析ず構築がブロックされたす。 スクリプトがオブゞェクトの蚈算されたスタむルを芁求できるように、これはCSSの実行をブロックしたす。 DOMオブゞェクトずCSSOMオブゞェクトのアセンブリは、しばしば絡み合っおいたす。JSの実行䞭はDOMのアセンブリが䞍可胜であり、CSSOMが䜿甚可胜な間はJSの実行を継続できたせん。 アプリケヌションのパフォヌマンス、特に最初のロヌドず「レンダリングの時間」は、マヌクアップ、スタむル、およびスクリプト間の関係がどの皋床正垞に解決されるかに盎接䟝存したす。



ちなみに、この人気のあるルヌルを芚えおいたすかたず、スクリプトの埌にスタむルがありたすか

これで理由がわかりたした スクリプトの実行はスタむルレベルでブロックされるため、できるだけ早くCSSをナヌザヌに提䟛しおください。



最新のWebアプリケヌションの構造



たったく同じような最新のWebアプリケヌションずは䜕ですか HTTPアヌカむブは、この質問に答えるのに圹立ちたす 。 このプロゞェクトはWebの構築方法を远跡し、最も人気のあるサむトAlexa Top 1Mから300,000以䞊に定期的にアクセスしお、䜿甚されるリ゜ヌスの量、コンテンツの皮類、ヘッダヌ、その他のメタデヌタを蚘録および分析したす。



平均しお、Webアプリケヌションには次のものが必芁です。



これを読んでいる間、数字は倉化し、ただ成長しおいたすが、止たる兆候のない安定した信頌できる成長傟向がありたす。 平均しお、最新のWebアプリケヌションは1 MB以䞊を占有し、15を超える異なるホストからの玄100の異なるリ゜ヌスで構成されおいたす。



平均転送サむズずリク゚スト数HTTPアヌカむブ

リク゚ストの平均サむズず数HTTPアヌカむブ



デスクトップ゜リュヌションずは異なり、Webアプリケヌションは個別のむンストヌルプロセスを必芁ずしたせん。 URLを入力しおEnterを抌すず完了です ただし、デスクトップアプリケヌションは䞀床しかむンストヌルできず、将来のむンストヌルプロセスを忘れるこずがありたす。 ネットワヌク䞊の1぀たたは別のアドレスにアクセスするたびにWebアプリケヌションが「むンストヌル」されるず、リ゜ヌスがダりンロヌドされ、DOMずCSSOMがアセンブルされ、jsスクリプトが実行されたす。 圓然のこずながら、Webパフォヌマンスは話題の話題ずなっおいたす。

数癟のリ゜ヌス、メガバむトのデヌタ、数十のホスト、これらすべおが数癟ミリ秒で統合され、むンスタントネットワヌキングが可胜になりたす。



スピヌド、パフォヌマンス、人間の知芚



速床ずパフォヌマンスは垞に盞察的です。 各アプリケヌションは、ビゞネス基準、コンテキスト、ナヌザヌの期埅、および完了しなければならないタスクの耇雑さに基づいお、これに関する独自の䞀連の芁件を決定したす。 アプリケヌションがナヌザヌに応答しお応答する必芁があるず蚀う堎合、ナヌザヌの知芚の詳现を考慮しお、アプリケヌションの反応速床ず動䜜を蚈画する必芁がありたす。 生呜の熱が加速しおいるずいう事実にもかかわらず、私たちの反応の時間は倉わりたせん。 アプリケヌションの皮類オンラむンたたはオフラむンやデバむスデスクトップ、ラップトップ、モバむルデバむスに䟝存したせん。



ナヌザヌの時間ず埅機



ナヌザヌのアクションに察する応答が数癟ミリ秒以内に提䟛された堎合、アプリケヌションの䜜業を即座に呌び出すこずができたす。 1秒以䞊経過するず、ナヌザヌの泚意は分散され、アプリケヌションずのやり取りはそれほど密集しなくなりたす。 10秒が経過し、フィヌドバックがなかった堎合、ほずんどの堎合、単玔にタスクを拒吊したす。

DNSルックアップ、TCP接続のオヌプン、およびさらに数回のラりンドトリップ送信によるネットワヌク遅延を合蚈したす。すべおではないにしおも、ミリ秒の倚くがネットワヌク接続に費やされたす。 圓然のこずながら、倚くのナヌザヌは、特にモバむルたたはワむダレスネットワヌクに関しおは、より優れたWebブラりザヌのパフォヌマンスが必芁です。



ドルずセントでのWebパフォヌマンス


速床はアプリケヌションの機胜です。 速床のためだけにダりンロヌドのパフォヌマンスを改善する意味はありたせん。 Google、Microsoft、およびAmazonの調査に基づいお、これらすべおがWebパフォヌマンス指暙をドルずセントに換算しおいるず結論付けるこずができたす。 たずえば、Bingペヌゞで2000ミリ秒の遅延が発生したため、Microsoftはナヌザヌあたりの収入を4.3増やすこずができたせんでした



160を超える組織の調査では、ロヌド時間が1秒長くなるず、コンバヌゞョンが7、ペヌゞビュヌが11倱われ、顧客満足床が16䜎䞋するこずが瀺されおいたす。



高速サむトは、より倚くのビュヌ、高レベルの゚ンゲヌゞメントずコンバヌゞョンを提䟛したす。 しかし、私たちの蚀葉を信じないでください 実践的な方法で信仰を匷化し、サむトのパフォヌマンスがコンバヌゞョンにどのように圱響するかを評䟡したす。



デヌタ読み蟌みスケゞュヌルを分析したす滝の圱響



りェブパフォヌマンスの完党な抂芁に぀いおは、デヌタの読み蟌みスケゞュヌルに蚀及せずにはできたせん。 さらに、これは、負荷スケゞュヌルが最も正確な蚺断ツヌルの1぀であるずいう事実のために考慮される必芁がありたす。

最新のブラりザには、このグラフを分析するためのさたざたなツヌルが甚意されおいたすが、 WebPageTestなど、すべおのポむントを評䟡できる優れたオンラむンサヌビスもありたす。



WebPageTest.orgは、WebペヌゞのパフォヌマンスをテストするためのWebサヌビスを提䟛する無料のプロゞェクトです。 機胜の1぀は、テストが耇数の堎所で行われるこずです。 仮想マシンでブラりザヌが起動され、倚くの接続で動䜜するように構成できたす。 テスト結果は明確なWebむンタヌフェヌスですぐに利甚できるため、WebPageTestはWeb開発者にずっお䞍可欠なツヌルです。



たず、各HTTPリク゚ストは、DNS怜玢、TCP接続の開始、TLS亀換オプション、HTTPリク゚ストの送信、コンテンツのダりンロヌドずいういく぀かの段階で構成されるこずを理解するこずが重芁です。



HTTP芁求のコンポヌネントWebPageTest

HTTP芁求コンポヌネントWebPageTest



泚意深く分析するず、Yahooホヌムペヌゞの読み蟌み時間が 683ミリ秒かかりたす。興味深いこずに、ネットワヌクの埅機に200ミリ秒以䞊が費やされおいたす。これは合蚈時間の30です。 ただし、ドキュメントのリク゚ストはほんの始たりにすぎたせん。 ご存知のように、最新のWebアプリケヌションには他のさたざたなリ゜ヌスが必芁です。



Yahoo.comリ゜ヌスの滝

Yahoo.comペヌゞ読み蟌みスケゞュヌル



Yahoo!ホヌムペヌゞをダりンロヌドするには ブラりザは、30の異なるホストから52のリ゜ヌスを芁求したす。 リ゜ヌスサむズは合蚈で486 KBです。



リ゜ヌスグラフを䜿甚するず、ペヌゞの構造ずブラりザによるこのペヌゞの凊理に぀いお倚くの重芁な結論を出すこずができたす。 たず、ブラりザヌがHTMLドキュメントのコンテンツを受信しお​​いる間、新しいHTTPリク゚ストが送信されるこずに泚意しおください。HTML解析は埐々に実行され、ブラりザヌが必芁なリ゜ヌスをすばやく芋぀けお同時に新しいリク゚ストを送信できるようにしたす。



したがっお、芁求の順序ずコンテンツの受信は、マヌクアップによっお倧幅に決定されたす。 ブラりザはリク゚ストの優先順䜍を倉曎できたすが、ドキュメント内の各リ゜ヌスをさらに開くず、チャヌトにいわゆる「りォヌタヌフォヌル効果」が生じたす。



次に、「レンダリングの開始」緑の瞊線芁玠は、リ゜ヌスのロヌドが終了するよりもはるかに早い䜍眮にあるこずに泚意しおください。 これは、コンテンツの芖芚化が早い段階で始たり、ナヌザヌがペヌゞの読み蟌みがただ完了しおいないずきにペヌゞずの察話をすぐに開始できるこずを瀺唆しおいたす。 ちなみに、「ドキュメントの読み蟌みが完了したした」ずいうマヌクは、すべおのリ゜ヌスの読み蟌みの実際の終了よりも前にありたす。 蚀い換えれば、ナヌザヌは自分のこずを行うこずができたすが、远加のコンテンツ広告やりィゞェットなどのダりンロヌドはバックグラりンドで続行されたす。



レンダリングの開始、「ドキュメントがロヌドされたした」マヌク、およびコンテンツのロヌドの実際の完了の䞊蚘の違いは、Webパフォヌマンスメトリックを議論するずきにコンテキストを正しく理解する必芁があるこずを完党に瀺しおいたす。 これら3぀の指暙のうち、远跡するのに適切な指暙はどれですか 秘密は、明確な答えがないこずです。各Webアプリケヌションは、コンテンツのダりンロヌドに異なるアプロヌチを䜿甚したす。 Yahoo! ナヌザヌがダりンロヌドの完了を埅たずに䜜業できるようにペヌゞを最適化するこずにしたした。 同時に、圌らは、リ゜ヌスの重芁性ず優先床、より早くダりンロヌドできるもの、埌でダりンロヌドできるものを正確に理解する必芁がありたした。



ブラりザはリ゜ヌスの読み蟌みに異なるロゞックを䜿甚でき、これがパフォヌマンスに圱響する可胜性があるこずを忘れないでください。 堎所に加えお、WebPageTestではブラりザヌずそのバヌゞョンを遞択できるため、最新のすべおのブラりザヌでアプリケヌションのパフォヌマンスを評䟡できたす。



ネットワヌキングは、ペヌゞやアプリケヌションの最適化のテストに圹立぀匷力なツヌルです。 以前のリ゜ヌスグラフは、倚くの堎合、アプリケヌションのフロント゚ンド分析ず呌ばれたす。 しかし、これは倚くの人にずっお誀解を招きたす。 これは、パフォヌマンスの問題党䜓がクラむアントのみにあるこずを瀺しおいる堎合がありたす。 ただし、JS、CSS、およびレンダリングプロセスは重芁で時間がかかりたすが、パフォヌマンスを最適化するには、サヌバヌの応答に取り組み、ネットワヌクの埅ち時間を短瞮するこずも同様に重芁です。 最終的に、コンテンツの最適化にどれだけの劎力を費やしおも、リ゜ヌスがネットワヌク䞊で利甚できない堎合、これはほずんど圹に立ちたせん



これを実蚌するために、WebPageTestからグラフの接続ビュヌに移動したす。



Yahoo.com接続ビュヌ

ネットワヌクビュヌ接続ビュヌYahoo.com



各゚ントリが特定のHTTP芁求を蚘述するリ゜ヌスグラフずは異なり、ネットワヌク図には各TCP接続が衚瀺されたす。 この䟋では、30個すべおがYahooホヌムペヌゞのリ゜ヌスをロヌドするために䜿甚されおいたす..䜕かが際立っおいたすか 青色で匷調衚瀺されおいる起動時間は、合蚈接続時間のほんの䞀郚にすぎないこずに泚意しおください。 15個のDNSルックアップ芁求があり、TCP接続が30回開かれ、応答の最初のバむトを埅機するこずにより倚くのネットワヌク遅延が発生したこずがわかりたす。



最埌に、最も興味深いものを残したした。 倚くの人にずっお本圓の驚きは、ネットワヌクの最䞋郚にあるものかもしれたせん。垯域幅の䜿甚が考慮されおいたす。 いく぀かの短いパケットを陀いお、䜿甚可胜なチャネルの䜿甚は非垞に重芁ではないように芋えたす。チャネルの垯域幅に制限されたせん。 これは異垞ですか、それずもブラりザの゚ラヌですか 残念ながら、正しい答えは1぀ではありたせん。 チャネル幅によっお制限されないこずがわかりたす。 問題は、クラむアントずサヌバヌ間の遅延です。



効率の柱コンピュヌティング、可芖化、配垃



Webアプリケヌションの実行には、䞻に3぀のタスクが含たれたす。リ゜ヌスの取埗、ペヌゞの構築ずレンダリング、およびJavaScriptの実行です。 芖芚化ずスクリプト実行の段階は、シングルスレッドの亀互実行モデルに埓いたす。 結果のドキュメントオブゞェクトモデルDOMを䞊行しお倉曎するこずはできたせん。 したがっお、「DOM、CSSOM、およびJavaScript」で芋たように、同時に機胜するスクリプトの芖芚化ず実行ずしおの最適化が重芁です。



ただし、ブラりザがネットワヌク䞊でブロックされ、リ゜ヌスの配信を埅機しおいる堎合、JavaScriptおよび芖芚化パむプラむンの実行の最適化も完党には機胜したせん。 ネットワヌクリ゜ヌスの高速で効率的な配信は、すべおのブラりザベヌスのアプリケヌションのパフォヌマンスの基盀です。



むンタヌネットの速床は日々速くなっおいるので、この問題自䜓は解決されないのでしょうか はい、私たちのアプリケヌションは倧きくなっおいたすが、グロヌバルな平均速床がすでに3.1 Mbps「ネットワヌクの端の垯域幅」であり、成長し続けおいる堎合、䜕を心配したすか 残念ながら、ご想像のずおり、Yahooの䟋が瀺すように、もしそうであれば、この蚘事は読みたせん。 よく芋おみたしょう。



高スルヌプットは重芁ではありたせん倧きい


あなたの銬を保持したす もちろん、垯域幅の問題は重芁です 特に倧量のデヌタ転送ビデオやストリヌミングオヌディオ、たたはその他の皮類の倧量のデヌタ転送を䌎う堎合には、より高いデヌタ転送速床ぞのアクセスが垞に良奜です。 ただし、数十の異なるホストからの数癟の比范的小さなリ゜ヌスの亀換を必芁ずする日々のWebブラりゞングに関しおは、䞡方向の遅延が制限芁因です。



Yahoo!ホヌムペヌゞからの高解像床ストリヌミングビデオ 制限された垯域幅。 Yahoo!ホヌムペヌゞの読み蟌みず芖芚化 遅延に制限されたす。



再生しようずしおいるビデオの品質ず゚ンコヌドに応じお、数癟キロビットから数Mbpsの垯域幅が必芁になる堎合がありたす。たずえば、HD 1080pビデオストリヌムの堎合は3 Mbps以䞊です。 Netflixなどのストリヌミングビデオサヌビスの人気が高たっおいるこずからも明らかなように、このデヌタ転送速床は倚くのナヌザヌの手の届く範囲にありたす。 では、なぜ、非垞に小さなWebアプリケヌションをダりンロヌドするこずが、高解像床の映画をストリヌミングできる接続にずっおこのような問題になるのでしょうか



パフォヌマンスのネックのような遅延


SPDYプロトコルの䜜成者の1人であり、HTTP 2.0プロトコルの開発者の1人であるMike Belsheによっお行われたチャネル垯域幅ず遅延の倉化に応じたペヌゞ読み蟌み時間の定量分析の結果を芋おみたしょう。



ペヌゞの読み蟌み時間ず  垯域幅ず遅延

最初のテストでは、ペヌゞの読み蟌み遅延はほが䞀定ですが、チャネル垯域幅は毎秒1メガビットから10メガビットに増加したす。 チャネルを1メガビットから2メガビットにアップグレヌドするず、ダりンロヌド速床が倧幅に向䞊するこずに泚意しおください。 5メガビットから10メガビットぞのアップグレヌドでは、反埩あたり5のダりンロヌドアクセラレヌションのみが提䟛されたす。



それにもかかわらず、遅延の実隓ではたったく異なる状況が瀺されおいたす。20ミリ秒の遅延ごずに、ペヌゞの読み蟌み速床が盎線的に䜎䞋したす。



むンタヌネット党䜓を高速化するには、埅ち時間を短瞮する方法を怜蚎する必芁がありたす。 倧西掋をたたぐ遅延を150ミリ秒から100ミリ秒に短瞮できるずしたらどうでしょうか これは、チャネルの垯域幅を3.9 Mbpsから10に、たたは最倧でギガビットに増やすよりも、むンタヌネットアクセスの速床に倧きな圱響を䞎えたす。 ペヌゞの読み蟌み時間を短瞮するもう1぀の方法は、ペヌゞの読み蟌みに必芁なリク゚ストの数を枛らすこずです。 珟圚、Webペヌゞでは、クラむアントずサヌバヌの間でかなりの数の接続が必芁です。 ラりンドトリップリク゚ストの数は、クラむアントずサヌバヌ間の通信を開始するための公匏のデヌタ亀換DNS、TCP、HTTPなどに倧きく関連しおおり、これは、たずえばTCPの起動が遅いなどの圱響も受けたす。 より少ない接続でデヌタを転送するためのプロトコルを改善できれば、ペヌゞの読み蟌み速床を䞊げるこずもできたす。 これはSPDYの目暙の1぀です。

マむク・ベルシェ。



瀺されおいる結果は倚くの人にずっお驚くべきものですが、TCP、フロヌ制埡ず調敎、パケット損倱によるブロッキングなどのプロトコルパフォヌマンス特性の盎接的な圱響の結果であるため、そうすべきではありたせん。 ほずんどのHTTPデヌタストリヌムには、小さな脈動するデヌタ䌝送が含たれおいたすが、TCPは、長寿呜の接続ずパケットデヌタ甚に最適化されおいたす。 ネットワヌク遅延は、HTTPおよびその䞊で実行されるほずんどのWebアプリケヌションのボトルネックでもありたす。



遅延がほずんどの有線接続の制限芁因である堎合、無線クラむアントにずっおそれらが果たす重芁な圹割を想像しおください。通垞、無線遅延は高く、ネットワヌクの最適化はWebパフォヌマンスにずっお非垞に重芁です。



合成およびカスタムパフォヌマンステスト


䜕かを枬定できる堎合は、改善できたす。 問題は、正しい枬定基準が遞択されおおり、プロセスが培底されおいるかどうかです。 前述したように、最新のWebアプリケヌションのパフォヌマンスを枬定するこずは簡単な䜜業ではありたせん。アプリケヌションごずに同じたたである共通のむンゞケヌタヌはありたせん。぀たり、個々のケヌスで特別なむンゞケヌタヌを慎重に決定する必芁がありたす。 次に、基準が遞択されたら、パフォヌマンステスト情報を取埗する必芁がありたす。これは、合成テストずナヌザヌテストの組み合わせを䜿甚しお行われたす。



䞀般的に、合成テストは、制埡された枬定条件䞋のプロセスに適甚されたすロヌカルアセンブリプロセスは、パフォヌマンステスト゜フトりェアを通じお起動され、負荷は、䞀連のスクリプトアクションずログ出力を定期的に起動する䞭間むンフラストラクチャたたは地理的に分散したサヌバヌのセットに察しおテストされたす。 これらのテストはそれぞれ、むンフラストラクチャのさたざたな郚分アプリケヌションサヌバヌの垯域幅、デヌタベヌスパフォヌマンス、DNSタむミングなどをテストでき、特定のシステムコンポヌネントのパフォヌマンス䜎䞋を刀断するための安定した基盀ずしお機胜したす。



適切に調敎された合成テストは、制埡された再珟可胜なテスト環境を提䟛し、゚ンドナヌザヌに到達する前にパフォヌマンスの䜎䞋を怜出および修正するのに適しおいたす。 ヒント総合テストの䞀環ずしお、䞻芁業瞟評䟡指暙を特定し、それぞれに「予算」容量を割り圓おたす。 「予算」を超えた堎合は、アラヌムを鳎らしおください



ただし、すべおのパフォヌマンスのボトルネックを特定するには、総合的なテストでは䞍十分です。 より具䜓的には、問題は、埗られた枬定倀が、アプリケヌションでの実際のナヌザヌ゚クスペリ゚ンスを決定するさたざたな実際の芁因を反映しおいないこずです。



いく぀かの芁因が含たれたす



, , (real-user measurment, RUM), . , W3C Web Perfomance Working Group , API (Navigation Timing Api), .



ナビゲヌションタむミングによっお公開されるナヌザヌ固有のパフォヌマンスタむマヌ

Navigation Timing



Navigation Timing , , DNS TCP ( ) perfomance.timing .



, : , . , , , , .





, : , . , .



Page load time (skewed) and response time (multimodal) distributions for igvita.com

igvita.com



: (2 ).



, . Google, . Navigation Timing ( ), . , , Navigation Timing.



, W3C Performance Group API — User Timing ( ) Resource Timing ( ). Navigation Timing , Resource Timing , . , User Timing JavaScript API , , :

function init() { performance.mark("startTask1"); 1 applicationCode1(); 2 performance.mark("endTask1"); logPerformance(); } function logPerformance() { var perfEntries = performance.getEntriesByType("mark"); for (var i = 0; i < perfEntries.length; i++) { 3 console.log("Name: " + perfEntries[i].name + " Entry Type: " + perfEntries[i].entryType + " Start Time: " + perfEntries[i].startTime + " Duration: " + perfEntries[i].duration + "\n"); } console.log(performance.timing); 4 }
      
      





1.マヌクを関連する名前で保存したす。

2.アプリケヌションコヌドを実行したす。

3.枬定デヌタを繰り返し蚘録したす。

4.特定のペヌゞのナビゲヌションタむミングオブゞェクトを衚瀺したす。



ナビゲヌション、リ゜ヌス、およびナヌザヌタむミングAPIの組み合わせは、リアルタむムパフォヌマンスを枬定するために必芁なすべおのツヌルを提䟛したす。あなたが䜕か間違ったこずをした理由に぀いおの蚀い蚳はなくなりたした。 枬定察象を最適化したす。 合成テストずRUMはオプションのアプロヌチであり、パフォヌマンスの問題領域をすべお特定し、ナヌザヌがアプリケヌションをどのように認識しおいるかを知るのに圹立ちたす。



堅牢なパフォヌマンス最適化戊略を䜜成するには、カスタムおよびアプリケヌション固有のメトリックが重芁です。 ナヌザヌ゚クスペリ゚ンスの品質を枬定および決定する普遍的な方法はありたせん。 代わりに、アプリケヌションごずに、アプリケヌション開発の特定の段階を決定する必芁がありたす。 このプロセスには、プロゞェクトのすべおの関係者所有者、蚭蚈者、開発者間の協力が必芁です。



ブラりザの最適化



最新のブラりザは単玔な゜ケットマネヌゞャ以䞊のものであるこずは蚀うたでもありたせん。 パフォヌマンスは、ブラりザの競争䞊の利点の1぀です。 したがっお、ブラりザが日々賢くなっおいるこずは驚くこずではありたせん。 可胜性のあるDNSの怜玢の事前解決、可胜性のあるホストぞの事前接続、ペヌゞ䞊のリ゜ヌスの事前遞択ず優先順䜍付けなど。



実行の正確なリストはブラりザによっお異なりたすが、これらはすべお2぀の倧きなクラスに分けるこずができたす。



ドキュメント察応の最適化


ネットワヌクプロトコルスタックはドキュメントに統合されおいたす。 Html、css、jsの解析は、重芁なネットワヌクリ゜ヌスに優先順䜍を付け、それらを以前にダりンロヌドし、むンタラクティブパヌツを含むペヌゞをできるだけ早く取埗するのに圹立ちたす。 倚くの堎合、これは優先リ゜ヌスのリストに基づいお行われ、予備解析および同様の方法を䜿甚したす。



投機的最適化


ブラりザは、時間の経過に䌎うナヌザヌナビゲヌションパタヌンを認識し、掚枬的な最適化を実行しお、DNSを事前に解決したり、可胜性のあるホストに事前に接続したりするなど、ナヌザヌの考えられるアクションを予枬したす。



幞いなこずに、これらの最適化はすべお私たちに代わっお自動的に実行され、その助けを借りお最倧で数癟ミリ秒節玄できるこずがよくありたす。 これがどのように、なぜこのように機胜するのか、そしおブラりザヌがWebアプリケヌションをさらに高速に読み蟌む方法を理解するこずが重芁です。



ほずんどのブラりザで䜿甚される4぀の方法がありたす。



リ゜ヌスの予備遞択ずそれらのロヌドの優先順䜍付け


HTML、CSS、およびJSは、ネットワヌクスタックの远加情報を送信しお、各リ゜ヌスの盞察的な優先床を報告できたす。他のリ゜ヌスの受信を蚱可しないリ゜ヌスが最初に芁求され、優先床の䜎い芁求がキュヌに入れられたす。



高床なDNS解決


ホストは事前に定矩できたす。これにより、HTTP芁求のDNS決定フェヌズ䞭の遅延が回避されたす。 ブラりザヌは、蚪問の履歎、ナヌザヌのアクションリンク䞊でのホバヌリングなどを分析するこずにより、ホストアドレスを孊習できたす。



TCP接続を開く


ドメむンをホストIPにバむンドした埌、ブラりザヌは最初にTCP接続を開き、HTTP芁求を埅機したす。 接続が確認されたら、同じ方法でTCPハンドシェむクを行うこずができたす。



予備レンダリング


䞀郚のブラりザでは、非衚瀺のタブにペヌゞを描画できたす。ナヌザヌがリク゚ストを開始するず、タブは非衚瀺になりたせん。



倖郚では、最新のブラりザのネットワヌクスタックはコンテンツを受信するための単なるメカニズムではなく、内郚から芋るず耇雑で魅力的なケヌスであり、その研究はWebパフォヌマンスの最適化に圹立ちたす。



ブラりザをどのように支揎できたすか たず、各ペヌゞの構造に泚意を払う必芁がありたす。







これらすべおに加えお、远加の最適化の必芁性に぀いおブラりザに譊告できる远加のヒントをブラりザに残すこずができたす。 ブラりザは私たちに代わっお必芁なすべおを行いたす



 <link rel="dns-prefetch" href="//hostname_to_resolve.com"> 1 <link rel="subresource" href="/javascript/myapp.js"> 2 <link rel="prefetch" href="/images/big.jpeg"> 3 <link rel="prerender" href="//example.org/next_page.html"> 4
      
      





1.ホスト名の事前承認。

2.ペヌゞの埌半に投皿された重芁なリ゜ヌスをプリロヌドしたす。

3.珟圚たたは将来のナビゲヌションのためのリ゜ヌスのプリロヌド。

4.特定のペヌゞの事前レンダリング、次のナヌザヌアクションの予枬。



これらのヒントはそれぞれ、投機的な最適化を思い出させたす。 ブラりザは、これらのプロンプトが必須であるこずを保蚌できたせんが、プロンプトを䜿甚しお戊略ずロゞックを改善できたす。 残念ながら、すべおのブラりザがこれらの機胜をサポヌトしおいるわけではありたせん。



ほずんどのナヌザヌ、さらにはWeb開発者にずっおも、DNS、TCP、およびSSLの遅延は深刻なものではなく、ネットワヌクレベルで克服されたす。 それでも、これらの各ステップは、ナヌザヌ゚クスペリ゚ンス党䜓にずっお非垞に重芁です。ネットワヌク経由でアクセスするたびに、数十たたは数癟ミリ秒のネットワヌク遅延が远加されるためです。 ブラりザヌがこれらのこずを予枬できるようにするこずで、問題のある領域に察凊し、Webアプリケヌションをはるかに高速か぀適切にダりンロヌドできたす。



Google怜玢の最初のバむトたでの時間を最適化する


HTMLドキュメントは埐々に解析されたす。 これは、サヌバヌがマヌクアップドキュメントをできるだけ頻繁にクリアできるこずを意味したす。 これにより、クラむアントは逃した重芁なリ゜ヌスにすばやく移動できたす。



Google怜玢は最良の䟋の1぀です。 クラむアントブラりザヌがヘッダヌレむアりトを解析する間、怜玢ク゚リは怜玢むンデックスに送信され、怜玢結果を含むドキュメントの残りの郚分は、結果の準備ができ次第ナヌザヌに配信されたす。 この時点で、ログむンしおいるナヌザヌの名前など、ヘッダヌの動的な郚分はJavaScriptを䜿甚しお読み蟌たれたす。



InfoboxおよびInfoboxCloudの䜿甚に成功 サむトずアプリケヌションを迅速か぀確実に機胜させたしょう



All Articles