圖片的懶加載和預加載


預加載:提前加載圖片,當用戶需要查看時可直接從本地緩存中渲染。

懶加載:懶加載的主要目的是作為服務器前端的優化,減少請求數或延遲請求數。

兩種技術的本質:兩者的行為是相反的,一個是提前加載,一個是遲緩甚至不加載。

懶加載對服務器前端有一定的緩解壓力作用,預加載 則會增加服務器前端壓力。

 

懶加載:

    img的data-src屬性及懶加載:當訪問一個頁面的時候,先把img元素或是其他元素的背景圖片路徑替換成一張大小為1*1px圖片的路徑(這樣就只需要請求一次),當圖片出現在瀏覽器的可視區域內時,才設置圖片真正的路徑,讓圖片顯示出來。這就是圖片懶加載。

通俗一點:

1、就是創建一個自定義屬性data-src存放真正需要顯示的圖片路徑,而img自帶的src放一張為1*1px的圖片路徑。

2、當頁面滾動直至此圖片出現在可視區域時,用js取到該圖片的data-src的值賦給src。

ps:自定義屬性可以去任何名字

 

場景:對於圖片過多的頁面,為了加快頁面加載速度,需要將頁面內未出現的可視區域內的圖片先不做加載,等到滾動可視區域后再去加載。

原理:img標簽的src屬性用來表示圖片的URL,當這個屬性值不為空時,瀏覽器就會根據這個值發送請求,如果沒有src屬性就不會發送請求。所以,在頁面 加入時將img標簽的src指向為空或者指向一個小圖片(loading或者缺省圖),將真實地址存在一個自定義屬性data-src中,當頁面滾動時,將可視區域的圖片的src值賦為真實的值。

參考:https://www.cnblogs.com/moxiaowohuwei/p/7908877.html

 

預加載:

簡單理解:就是在使用該圖片資源前,先加載到本地來,真正到使用時,直接從本地請求數據就行了。

 

 var arr = [
          '../picture/1.jpg',
          '../picture/2.jpg',
          '../picture/3.jpg',
      ];

      var imgs =[]
      preLoadImg(arr);

      //圖片預加載方法
      function preLoadImg(pars){
          for(let i=0;i<arr.length;i++){
              imgs[i] = new Image();
              imgs[i].src = arr[i];
          }
      }

 

 可以看到圖片已經加載完畢了,到本地了

現在在頁面放一個img標簽

<body>
<img src="" alt=""  id="pic"/>
 //存放圖片路徑的地址
   <script>
      var arr = [
          '../picture/1.jpg',
          '../picture/2.jpg',
          '../picture/3.jpg',
      ];

      var imgs =[]
      preLoadImg(arr);

      //圖片預加載方法
      function preLoadImg(pars){
          for(let i=0;i<arr.length;i++){
              imgs[i] = new Image();
              imgs[i].src = arr[i];
          }
      }
       // 5s之后顯示出該圖片
      setInterval(function(){
          var pic = document.querySelector('#pic');
          pic.src = '../picture/1.jpg'
      },5000);

   </script>
    

5s之后並沒有重復請求1.jpg這個圖片,因為之前已經請求下來了,這就是預加載

 

 參考:https://blog.51cto.com/11871779/2404689


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM