JavaScript をより少ない部分に統合し、http リクエストの数を減らすことは、多くの場合推奨される最適化です。小規模なサイトでは、次のような構造に簡単に到達できます。
/js/jQuery-xx.js
/js/plugins.js
/js/app.js
app.js
かなり重くなる可能性のある控えめなサイト (jQuery を少しだけ洗練したもの) でさえ。整理するために、実装を論理ビットに分割するのは簡単です。
..
/js/app-global.js
/js/app-contact.js
/js/app-products.js
/js/app-splash.js
個別のファイルとして、特定のコンテキストでそれらを要求するのは簡単ですが、個々のサイズは非常に小さく、1 ピースあたり約 1 ~ 3 kb です。を務めたapp.js
。
しかしapp.js
、約 20 個ほどの jQuery セレクターと、ほとんどのページで使用されていないその他の JavaScript を含むファイルであることが私には思い浮かびます。ほとんどのコンテキストに存在しない要素を対象とする場合、これらの jQuery セレクターを起動させるために CPU サイクルが浪費されているようです。
より差し迫った最適化はどれですか: • http リクエストの削減? • 未使用の jQuery セレクターを減らすには?
プロファイリングに Chrome の監査ツールを使用していますが、javascript ファイルのネットワーク リクエストを減らすことを推奨しています。膨張を測定するためのガイドラインはありjQuery.ready(…);
ますか?
アップデート
提示された証拠を比較検討する最も簡単な方法は、実装コードを 1 つのファイルとして提供し、ルーティング システムを使用してさまざまなモジュールをアクティブにすることです。私の場合、すでに構築した単純な php ルーターに接続しました。
root.php
<script type="text/javascript">
var myApp = {
modules: {}
bootstrap: function()
{
<?php
if ( $pageId == 'contact' )
echo 'myApp.modules.contact();';
if ( $pageId == 'index' )
echo 'myApp.modules.splash();';
if ( preg_match( '~^help/~iu', $pageid ) )
echo 'myApp.modules.faq();';
?>
}
}
</script>
<script type="text/javascript" src="/js/jquery1.9.1.js"></script>
<script type="text/javascript" src="/js/jquery-plugins.js"></script>
<script type="text/javascript" src="/js/myApp.js"></script>
myApp.js
$(document).ready(function()
{
myApp.bootstrap();
//… global jQuery stuff …
});
// Define modules
myApp.modules.splash = function() {
$('#splash').click(
//…etc…
);
}
myApp.modules.faq = function() {
$('.faq').show(
//…etc…
);
}
myApp.modules.contact = function() {
$('.contact').bind(
//…etc…
);
}