0

おはようございます、

私は現在プロジェクトを終了しています:http ://schaedlingsbekaempfer24.eu/

単純な自己呼び出しのfadeOut/fadeIn効果のためにJavaScriptを少し埋め込んだ後、ページの読み込み時間が4〜5秒増加しました。

これは私のjsです:

$(document).ready(function() {

    pic = $(this).find('.picture a:nth-child(2n) img');
    text = $(this).find('#testimonal p:first-child').next();

    $.fn.fader = function() {

        $(pic).delay(5000).fadeOut(300);
        $(text).delay(5000).fadeOut(300);

        $(pic).delay(5000).fadeIn(300);
        $(text).delay(5000).fadeIn(300);

        $(this).fader();
    };

    setTimeout(function() {    
      $('#preview').fader();
    }, 2000);

});

サイトの読み込みを開始した最初の瞬間から関数が実行されているようです。読み込みパフォーマンスを向上させるためにコードを微調整するにはどうすればよいですか?

4

1 に答える 1

1

最善の修正は、設定されたタイムアウトを関数内に移動することです。これにより、再帰ハンマーを回避し、5秒に1回だけフェードコールを生成します。

今、あなたはあなたのブラウザを殺し、無限の再帰呼び出しでそれを強制しています。

フェーダー関数内にconsole.log('called')を配置すると、驚かれることでしょう。

あなたができるマイナーな改善もありますが、それらはあなたの最初の問題と比較して本当にマイナーです:

1- jqueryのロード後、ドキュメントレディコールバック関数の前に$.fn.fader定義を移動します

2-セレクターをキャッシュします。

var $this = $(this);
$this.delay(1000).fadeIn(300);
$this.delay(1000).fadeOut(300);

繰り返しますが、これは大きな最適化の問題と比較して非常にマイナーなパフォーマンスの調整であり、それ自体でまともなパフォーマンスを提供することはありません。

于 2012-04-23T07:58:27.090 に答える