写真遅延ロード(フロントエンド)

転載します。https://blog.csdn.net/idongchen/article/details/81145279

 

フロントエンドのパフォーマンスの最適化Lazyload
Lazyloadはじめに
まず、アイデアの実現
セカンドを、コードがあり
、その後、最適化、3
Lazyloadプロファイル
フロントエンドの仕事、インタフェースおよび効果は、同時により多くの怒っプルクールになっても、パフォーマンスの問題を言及する必要があります。コンテンツが豊富でいくつかのプロジェクト、長いページ、画像、。モールページのように。同期がロードされている場合は使い捨てローディングが、それはロードターンの人が〜崩壊、花がなくなるまで待機することは確かです。今日はLazyload共有技術のロード技術の遅れです。トラフィックを保存し、ダンス、サーバー上の緩和圧力に近づいて、ページの読み込み速度は、ユーザーエクスペリエンスを強化しましょう。

まず、アイデアの実現に
長いページでは、画面の表示可能領域を制限しました。
IMG SRC属性値は同じ図を参照するタグページまたはプレースホルダを設定されていません。
「データ・URL」:画像の実際のアドレスなどのカスタム属性imgタグは、あります。
スクロールを聞く、あなたは、動的URLは、実際の「データのURLを」置換する場所までスクロールします。

第二に、コード
のHTML部分(簡易概略下部構造

<!DOCTYPE HTML> 
<HTML> 
  <HEAD> 
    <メタ文字コード= "UTF-8"> 
    <タイトル> Lazyload </ TITLE> 
    <スタイルタイプ= "テキスト/ cssの"> 
      .mobラップ李{ リストスタイル:なし;幅:100%;高さ:345px;}
     </スタイル> 
  </ head> 
  <body> 
    <UL クラス = "MOB-ラップ"> 
      <LI」> 
        <IMGクラス= "タンプ、IMG" ALT = "装填"データ-SRC = "のhttp:// mob.com/public/images/index/sharesdk-logo.jpg"><p>ShareSDK轻松实现社会化功能</ P> 
      </ LI> 
      <LI"> 
        <IMGクラス= "タンプ-IMG" ALT = "読み込み"データ-SRC = "のhttp://mob.com/public/images/index/sms-logo.jpg "> <P> SMSコードSDK </ P> 
      </ LI> 
      <LI" > 
        <IMGクラス= "IMG-TAMP" Altキー= "装填" = SRC-データ「HTTP:// mob.com/public/images/index/rec-logo.jpg"><p>MobLinkシームレスにリンクするWebおよびアプリケーション</ p型> 
      </ LI> 
    </ UL> 
  </ BODY> 
</ HTML>

プロセス簡単に

スタート - 「スクロールイベントを聞く - 」<scrollTopスプライトそのトップの高さから? - 「データのURLを置き換えるURL - 」エンド

 

  • JSの一部
VAR AIMG = [ 
  { "SRC": "http://mob.com/public/images/index/sharesdk-logo.jpg"、 "TXT": "ShareSDK容易社会機能"}、
  { "SRC": "http://mob.com/public/images/index/sms-logo.jpg","txt": "SMSコードSDK"}、
  { "SRC":「http://mob.com/public/画像/インデックス/ REC-logo.jpg "" TXT ":" MobLink アプリケーションとWebがシームレスにリンク" } 
]; 
VAR SLI = '' ; 
文献 .getElementsByClassName(" MOB-ラップ「)[0] .innerHTML = "" ;
 のために(私は=せ0; I <10; I ++ ){ 
  SLI =のdocument.createElement( "李" )。
  SLI .innerHTML = `<IMGのクラス= "タンプ、IMG" ALT = "装填" SRC = "./ zwt.gif"データSRCは= "$ {aImg [I%3] .SRC}"> <P> $ {aImg [I%3]。 TXT} </ P> `。
  文書 .getElementsByClassName( "暴徒ラップ")[0]。appendChild(SLI)。
}。
 .onscroll = 関数(){
   VAR bodyScrollHeight = document.documentElement.scrollTop。// ボディ滚动高度
  VAR windowHeight = window.innerHeight。// 视窗高度
  VAR IMGS = document.getElementsByClassName( 'タンプ-IMG' );
  ためVAR ; I <imgs.length; iが0 = I ++ ){
     VAR imgHeight = IMGS [I] .offsetTop。
    もし(imgHeight <windowHeight + bodyScrollHeight - 340 ){ 
       IMGS [I] .SRC = IMGS [I] .getAttribute( 'データ-SRC' )。
       IMGS [I] .className = IMGS [I] .className.replace( 'タンプ、IMG'、 '' )。
    } 
  } 
}。

0.0とても急いで呼び出されます~~~いつも悪い、見ていただきありがとうございます

第三に、再最適化
任意の処理なしには、必然的に直接監視につながるとき、あまりにも頻繁にトリガーハンドラマウスホイールをスクロールします。
あなたが遅いページ変更カードで、その結果、操作の多数を引き起こし、業績動向、DOMや他の処理機能の多くを消費しているために起こる、場合
、あるいは応答しないブラウザがクラッシュします。
この問題に対処するためのアイデアは、スロットルと画像安定化にあります。
コーヒーのうち、ボタン、ピックコーヒー、プレス:機能スロットル概念は非常に鮮やかなメタファーを持って
いないことで、数回に相当ボタンを数回受けたか、コーヒーのカップを押して、その後、後で作品。


従来のスロットリングは、ここで言っているのではない、以下に説明が少なくともたびに機能を絞るには、少なくとも一度実行されます。

// 节流函数 
_throttle =(FN、遅延、最小)=> {
     VARタイムアウト= ヌル
  のstartTime = 新しい 日付(); 
    FN(); 
    リターン 機能(){
     VAR CURTIME = 新しい 日付(); 
    clearTimeout(タイムアウト)。
    もし(CURTIME -のstartTime> = 以上){ 
        FN()。
        startTime = CURTIME。
    } { 
        タイムアウト =のsetTimeout(FN、遅延)。
    } 
    } 
}

スロットル機能の使用

 

機能比較(){
   VAR bodyScrollHeight = document.documentElement.scrollTop; // ボディローリング高 
  コンソール。ログイン(bodyScrollHeight + "SRC代替方法" VAR windowHeight = window.innerHeight; // ウィンドウの高さ
  のvar IMGS = document.getElementsByClassName(「TAMP -IMG ' );
   のためVAR I = 0、I <imgs.length; I ++ ){
     VAR imgHeight IMGS = [I] .offsetTop; // 上から像高
    IF(imgHeight <windowHeight bodyScrollHeight + - 340 ){ 
       IMGS [ I] .SRC IMGS = [I] .getAttribute( 'SRC-データ' )。
       IMGS [I] .className = IMGS [I] .className.replace( 'タンプ、IMG'、 '' )。
    } 
  } 
} 
ウィンドウ .onscroll = _throttle(比較、350600)。

スクロール時間least長い600よりも、コールは、比較、または350msの実行を遅らせます。 
このような直接onscrollパフォーマンスの相対は、さらに問題なく機能して、強化します。 
さまざまなビジネス・シナリオと少なくとも遅延が可能調整します。

 

おすすめ

転載: www.cnblogs.com/sz-xioabai/p/12081550.html