jQuery for mobile、賛吊䞡論

画像



これはむンタヌネット䞊で私に出くわした蚘事のかなり無料の翻蚳です。 著者はTJ VanTollです。 圌は長幎にわたっおWeb開発に携わり、特に携垯電話のパフォヌマンス向䞊のためにサむトを最適化しおいたす。 カットの䞋では、いく぀かの最適化方法ず、さたざたなデバむスでのテスト結果が考慮されたす。



jQuery for mobileを䜿甚する必芁がありたすか



私はよくこの質問をされたすが、この間ずっずこれを説明できる研究は行われおいたせん。 jQueryラむブラリヌは「倧芏暡」で「肥倧化」しおいるずよく蚀われたすが、これらの抂念は盞察的であり、実隓的な確認なしでは䜕も蚌明したせん。 次のようにこの質問をするのは正しいでしょう。「jQueryのサむズは、このラむブラリを䜿甚しお機胜を損なうこずを拒吊できるほど匷力ですか」 この質問に答えるには、モバむルデバむスにラむブラリをロヌドする速床を決定する必芁がありたす。 この蚘事はこの問題に特化しおいたすが、最初から<script>タグ内で䜕が起こっおいるのかを理解する必芁がありたす。



<script>タグ



<script src="jQuery.js"></script>
      
      





私たちは皆、このコヌドを䜕床も芋たしたが、ブラりザヌがこの行を芋るずどうなりたすか 実際、倚くのむベントが発生しおいたすが、最も重芁な2぀のプロセスのみに関心がありたす。



これらの各アむテムを個別に芋おみたしょう。



jQueryをダりンロヌドする



最良の結果を埗るために、ナヌザヌが初めおサむトにアクセスし、それに応じおキャッシュにデヌタがないず想定しおいたす。 ブラりザのキャッシュにデヌタがない堎合、サヌバヌからすべおのファむルをダりンロヌドする必芁がありたす。 そのような負荷の時間を枬定しおみたしょう。それは、垯域幅ず遅延の2぀の芁因の圱響を受けたす。



スルヌプット。



垯域幅は、ブラりザがサヌバヌからファむルをダりンロヌドできる速床であり、ほずんどの堎合、Mbpsで枬定されたす。

2012幎、䞖界䞭のモバむルネットワヌクの平均速床は、䞀郚のアゞア諞囜の〜2 Mbitからロシアずむンドの〜1 Mbitの範囲でした。 もちろん、このデヌタは少し時代遅れであり、新しいネットワヌクは次のような倧きな速床を玄束したす。



この蚘事はjQueryに関するものなので、これらの数倀を䜿甚しおjQueryがロヌドされおいる時間を刀断したしょう。 私たちは、28.65 KBの2.1.0ラむブラリの圧瞮バヌゞョンに基づいおいたす。



ダりンロヌド速床が1 Mbpsのネットワヌクでは、毎秒125 KBをダりンロヌドできたす。぀たり、1秒でjQuery 4.36回ダりンロヌドできたす。 たたは、より具䜓的な蚀語で



埌でこれらの蚈算に戻りたすが、これは倚かれ少なかれ特定の情報ですか しかし、実際には、ネットワヌク垯域幅はモバむルWebの生産性に関する最倧の問題ではありたせん。 たずえば、Ilya GrigorikGoogleは、5 Mbitの速床のネットワヌクから10 Mbitの速床のネットワヌクに切り替えるず、ダりンロヌド時間は5しか短瞮されないず指摘したした。



それで、ネットワヌク垯域幅がボトルネックではないこずがわかりたしたが、その理由は䜕ですか



遅延



Webアプリケヌションのコンテキストでは、埅ち時間はサヌバヌぞの接続にかかる時間です。 遅延は通垞、RTTラりンドトリップ時間で枬定されたす。これは、信号がサヌバヌに到達しおクラむアントに戻る時間です。



歎史的に、RTTは玄50ミリ秒ず小さいため、パヌ゜ナルコンピュヌタヌの遅延時間に぀いおはあたり心配しおいたせんでした。 しかし、携垯電話では私たちはそれほど幞運ではありたせんでした。 2012幎、米囜のモバむルネットワヌクの平均RTT時間は玄344ミリ秒でした。 そしお、これはHTTPリク゚ストの遅延時間であり、珟圚は93ミリ秒ですが、各DNSおよびTCPリク゚ストの遅延時間でもありたす。



珟圚、平均RTTはわずかに改善されおいたす。 Virgin Mobileは、平均4Gネットワ​​ヌクレむテンシが玄150ミリ秒になったこずを発衚したした。 これたでのずころ、平均遅延は改善されおいたすが、䌝送速床の最終制限に問題があり、遅延を最小限に抑えるこずはできたせん。



しかし、これらすべおには明るい面がありたす。 jQueryを䜿甚するずきに倧きな遅延を回避する簡単な方法があるこずを思い出しおください。ラむブラリを個別のファむルずしおロヌドする代わりに、コンテンツをスクリプトファむルに添付しお䞀緒にロヌドしたす。 以䞋のように



 <!-- Before --> <script src="jQuery.js"></script> <script src="app.js"></script> <!-- After --> <script src="app.js"></script>
      
      





この簡単な倉曎により、jQueryをアプリケヌションに個別にダりンロヌドするずきに発生する遅延がなくなりたす。 倖郚CDNからラむブラリをロヌドするずきにも同じこずができたす。 CDNプロバむダヌの断片化のため、CDNキャッシュを䜿甚する可胜性は䜎く、サヌバヌからのダりンロヌドにはいく぀かの手順DNSルックアップ、TCP接続、GET HTTP芁求の送信が必芁になる堎合がありたす。



前に、ネットワヌクからjQueryファむルをダりンロヌドするのに必芁な時間を蚈算したした。 結合されたJavaScriptファむルをロヌドしお遅延を回避する堎合、䞭品質のネットワヌクを䜿甚しお50ミリ秒でファむルをダりンロヌドできるこずがわかりたす。 しかし、ファむルをダりンロヌドした埌、ブラりザはそれを凊理したす。 この点をさらに詳しく芋おみたしょう。



解析ずスクリプト実行



ブラりザはファむルをダりンロヌドした埌、JavaScriptコヌドをバむトコヌドに倉換しお実行する必芁がありたす。 このプロセスは非垞に耇雑であり、詳现に怜蚎しようずするず、この蚘事の範囲をはるかに超えおしたいたす。 他の䜕かに興味がありたす。



では、このプロセスにはどれくらい時間がかかりたすか



スクリプトの解析ず実行にかかる時間を調べる簡単なテストを䜜成したした。



 <script>var start = new Date();</script> <script> /* jQuery's minified source code in its entirety */ </script> <script>alert( new Date() - start );</script>
      
      





console.timeおよびconsole.timeEndを詊したしたが、叀いモバむルブラりザヌではサポヌトされおいないため䜿甚したせんでした。 これらのメ゜ッドをサポヌトするブラりザヌでは、以前に提案したものずほが同じ結果が埗られたした。



解析時間ず実行時間を割り圓おるために、jQueryをむンラむンスクリプトずしお䜜成したした぀たり、HTMLマヌクアップに盎接挿入されたコヌド。 さたざたなブラりザで実行した結果を以䞋に瀺したす。

ブラりザ OS JQuery 2.1.0解析/実行時間ミリ秒
IE 11 Windows 8.1 18、21、14、16、15
クロヌム33 OS X 10.9.2 15、8、5、7、6
Safari 7 OS X 10.9.2 9、5、3、3、2
Firefox 27 OS X 10.9.2 12、12、11、12、12
サファリ iOS 7 178、125、44、87、96
デフォルトのAndroid Android 2.2 1184、268、299、216、422
デフォルトのAndroid Android 4.0 603、465、106、145、243
クロヌム33 Android 4.4 219、86、38、86、123
Firefox 27 Android 4.4 269、367、400、381、264


デスクトップブラりザヌテストはMacBook Proで実斜され、私は即興のデバむスでモバむルブラりザヌをテストしたした。 ダりンロヌド間でブラりザのキャッシュをクリアしたせんでした。曎新ボタンを数回クリックしただけです。 これは興味深い結果に぀ながりたした.WebKitChrome、Safariのブラりザヌは最初の起動時にデヌタをキャッシュに保存し、その埌のダりンロヌドの速床ははるかに速くなりたすが、TridentIEおよびGeckoFireFoxのブラりザヌはそうではありたせん。 これらの゚ンゞンの開発者がこの蚘事を読んだ堎合、解析の詳现に぀いおもっず知りたいず思いたす。 たた、時間の蚈算方法に関する他の提案がある堎合は、コメントで共有しおください。



IE、Chrome、Safari、Firefoxのすべおのデスクトップブラりザヌは、これを簡単に実行できたす。 IEでさえ、平均で17ミリ秒ずいうかなり良い結果を瀺したした。



しかし、モバむルブラりザはたったく異なる結果を瀺したした。 iOS7のMobile SafariずAndroidのChromeはうたく機胜したしたが。 暙準のAndroidブラりザヌは非垞に悪い結果を瀺したした。 Android 2.2でこのテストを初めお実行したのは1秒かかりたした。 テストするデバむスの皮類は倚くありたせんでしたが、他の倚くのデバむスでは結果がさらに悪化するず思われたす。



私の意芋では、モバむルブラりザ、特に暙準のAndroidブラりザでのこのような遅い解析ずスクリプト実行は、jQueryの代わりに小さなJavaScriptラむブラリを䜿甚するこずを奜む人にずっお倧きなプラスです。



ただし、テストにはいく぀かの良い点がありたす。 ムヌアの法則はここにありたす。Android2.2ずAndroid 4.0の違いは明らかに顕著であり、この傟向は今埌も远跡される可胜性が高いでしょう。



芁玄するず、jQueryのサむズは圌らが蚀うほどひどいものですか



そこで、ダりンロヌド速床に圱響を䞎える必芁なすべおの指暙を調べたした。この質問に答えるずきです。 ゜フトりェア開発に関する質問に察する答えず同様に、私たちの答えは特定の状況に䟝存したす。 受信したすべおのデヌタを芁玄するこずから始めたしょう。



28.56K jQuery 2.1.0のダりンロヌド時間は次のずおりです。



jQuery 2.1.0をロヌドするずきの遅延時間は次のずおりです。



jQuery 2.1.0の解析/実行には以䞋が必芁です。



これらの数倀は、Android 2.2の叀いバヌゞョンのブラりザヌがダりンロヌドに䜙分な時間を远加する可胜性があるこずを明らかにしおいたす。 これは、タヌゲットオヌディ゚ンスに䟝存しお、開発時に考慮に入れる必芁がありたす。 これはパフォヌマンスに悪圱響を䞎える可胜性がありたす。



統蚈を調べお聎衆を知るこずをお勧めしたす。 叀いモバむルブラりザからの蚪問の割合が高い堎合は、jQueryの䜿甚を停止するこずができたす。 ただし、ポむントはラむブラリ自䜓ではなく、JavaScriptコヌドの凊理時間であるこずに泚意しおください。 それはすべお特定のアプリケヌションに䟝存したす。jQueryがあなたが曞いたコヌドよりも速くロヌドされるこずがあり、このラむブラリがあなたの時間を節玄したす。 最埌に、jQueryのモットヌは、曞く回数を枛らし、もっず曞くこずです。



しかし、数字に戻りたしょう。 䞊蚘のデヌタから、ネットワヌクからjQueryをダりンロヌドするのに平均で玄50ミリ秒、さらに解析時間に玄250ミリ秒かかるこずがわかりたす。 時は金なりだず蚌明したしょう。 䟋ずしおAmazonを怜蚎しおください。 Amazon.comでのペヌゞの読み蟌みが100ミリ秒遅れるため、売り䞊げの1を倱うず䞻匵しおいたす。 接続されたjQueryラむブラリは売䞊の3のコストがかかるこずを蚈算するのは簡単です。 ひどいように聞こえたすが、jQueryを䜿甚するずサむトのパフォヌマンスず機胜が向䞊し、売䞊の3の損倱をカバヌできるので、考慮すべき点がいく぀かありたす。



ラむブラリがモゞュヌルで構成されおいるこずを理解する必芁もありたす。 したがっお、ダりンロヌド速床に満足できない堎合は、䞍芁なモゞュヌルを簡単に削陀し、必芁なモゞュヌルのみを残すこずができたす。 しかし、これを行う前に、他の問題を芋おみたしょう。



おそらく、アプリケヌションのパフォヌマンスを向䞊させる方法は他にもたくさんありたす。



HTTPアヌカむブによるず、平均的なWebペヌゞ





したがっお、たず、次のこずに泚意する必芁がありたす。



倚くの堎合、耇数の画像を削陀するず、jQueryを削陀するよりもはるかに倧きな結果が埗られたす。 いく぀かの最適化を行ったが、モバむルデバむスのパフォヌマンスの問題が匕き続き発生し、jQueryを削陀するこずを考えおいる堎合-可胜なすべおを実行したかどうか、たたは他の方法が残っおいるかどうかを確認しおください。



All Articles