好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 網站性能延遲加載圖像的五種技巧(小結)

網站性能延遲加載圖像的五種技巧(小結)

熱門標簽:南昌仁和怎么申請開通400電話 電話機器人黑斑馬免費 電話機器人電銷系統掙話費 機器人外呼系統存在哪些能力 只辦理400電話 高德地圖標注地點糾錯 拓展地圖標注 如何獲取地圖標注客戶 平涼地圖標注位置怎么弄

由于圖片是web上最流行的內容類型之一,因此網站的頁面加載時間很容易成為一個問題。

即使經過適當的優化,圖像也會有相當大的重量。這可能會對訪問者在訪問網站內容之前等待的時間產生負面影響。很有可能,它們會失去耐心,轉向其他地方,除非你能想出一個不影響速度感知的圖像加載解決方案。

在本文中,您將學習有關延遲加載圖像的五種方法,您可以將這些方法添加到web優化工具包中,以改進站點上的用戶體驗。

什么是延遲加載?

延遲加載圖像意味著在網站上異步加載圖像——也就是說,在網站上面的折疊內容完全加載之后,甚至僅當它們出現在瀏覽器的視區中時,才有條件地加載它們。這意味著,如果用戶不一直向下滾動,那么放在頁面底部的圖像甚至不會被加載。

許多網站都使用這種方法,但在圖片密集的網站上尤其明顯。嘗試瀏覽你最喜歡的在線搜索網站,尋找高分辨率的照片,你很快就會意識到網站只加載有限數量的圖片。當您向下滾動頁面時,您將看到占位符圖像快速填充真實圖像以供預覽。例如,請注意unsplash.com上的加載程序:將頁面的該部分滾動到視圖中會觸發使用全分辨率照片替換占位符:

為什么要關心延遲加載圖像?

至少有兩個很好的理由可以讓你考慮延遲的為你的網站加載圖像:

  • 如果您的網站使用JavaScript來顯示內容或向用戶提供某種功能,那么加載DOM很快就變得至關重要。腳本在開始運行之前,通常要等到DOM完全加載之后才開始運行。在有大量圖像的站點上,延遲加載-或異步加載圖像-可能會在用戶停留或離開您的站點之間產生差異。
  • 由于大多數延遲加載解決方案只在用戶滾動到在視區中可以看到圖像的位置時加載圖像,因此如果用戶從未到達該點,則永遠不會加載這些圖像。這意味著節省了大量的帶寬,大多數用戶,尤其是那些在移動設備和慢速連接上訪問網絡的用戶,都會感謝您。

嗯,延遲加載圖像有助于網站性能,但最好的方法是什么?

沒有完美的方式。

如果您使用JavaScript,那么實現您自己的延遲加載解決方案應該不成問題。沒有什么比自己編寫代碼更能讓你控制了。

或者,您可以瀏覽web,尋找可行的方法,并開始使用它們。我就是這么做的,然后遇到了這五個有趣的技巧。

1使用Intersection Observer API進行延遲加載

Intersection Observer API是一個現代化的界面,你可以利用它來延遲加載圖像和其他內容。

下面介紹MDN如何引入此API:

Intersection Observer API提供了一種異步觀察目標元素與祖先元素或頂級文檔視口交叉的方法。
換句話說,異步觀察的是一個元素與另一個元素的交集。

Denys Mishunov在交叉觀察者和使用它的延遲加載圖像上都有很棒的教程。這是他的解決方案的樣子。

假設您想懶得加載圖片庫。每個圖像的標記如下所示:

<img data-src="image.jpg" alt="test image">

注意圖像的路徑如何包含在data-src屬性內,而不是src屬性中。原因是使用src意味著圖像會立即加載,這不是你想要的。

在CSS中,您可以為每個圖像賦予一個min-height值100px。這為每個圖像占位符(沒有src屬性的img元素)提供了垂直維度。

img {
  min-height: 100px;
  ...more styles here
}

在JavaScript文檔中,然后創建一個配置對象,并將其注冊到一個intersectionObserver實例中:

// create config object: rootMargin and threshold
// are two properties exposed by the interface
const config = {
  rootMargin: '0px 0px 50px 0px',
  threshold: 0
};

// register the config object with an instance
// of intersectionObserver
let observer = new intersectionObserver(function(entries, self) {
  // iterate over each entry
  entries.forEach(entry => {
    // process just the images that are intersecting.
    // isIntersecting is a property exposed by the interface
    if(entry.isIntersecting) {
      // custom function that copies the path to the img
      // from data-src to src
      preloadImage(entry.target);
      // the image is now in place, stop watching
      self.unobserve(entry.target);
    }
  });
}, config);

最后,迭代所有圖像并將它們添加到此iterationObserver實例:

const imgs = document.querySelectorAll('[data-src]');
 imgs.forEach(img => {
   observer.observe(img);
});

這個解決方案的優點是:實現起來很容易,很有效,并且讓intersectionObserver在計算方面做大量的工作。

另一方面,雖然大多數瀏覽器的最新版本都支持交集觀察器API,但并不是所有瀏覽器都一致支持它。幸運的是,有一個polyfill可用。

2 Robin Osborne逐步增強的延遲加載

羅賓·奧斯本提出了一個基于漸進增強的超級巧妙的解決方案。在這種情況下,使用JavaScript實現的延遲加載本身被認為是對常規HTML和CSS的增強。

漸進增強的原因嗎?那么,如果使用基于JavaScript的解決方案顯示圖像,如果禁用JavaScript或發生錯誤阻止腳本正常工作,會發生什么情況呢?在這種情況下,如果沒有漸進的增強,用戶很可能根本看不到圖像。不酷。

您可以在此Pen中查看Osborne解決方案的基本版本的詳細信息;在另一個Pen中,你可以看到一個更全面的解決方案,其中考慮了破壞JavaScript的情況。

這種技術有許多優點:

  • 漸進增強方法可確保用戶始終可以訪問內容。
  • 它不僅適用于JavaScript不可用的情況,而且還適用于JavaScript 崩潰的情況:我們都知道容易出錯的腳本,特別是在運行大量腳本的環境中。
  • 它延遲加載滾動圖像,因此如果用戶不滾動到瀏覽器中的位置,則不會加載所有圖像。
  • 它不依賴于任何外部依賴,因此不需要框架或插件。

3 Lozad.js

實現延遲加載圖像的一種快速簡便的替代方法是讓JS庫為您完成大部分工作。

Lozad是純JavaScript中高性能,輕量級和可配置的延遲加載器,沒有依賴關系。您可以使用它來延遲加載圖像,視頻,iframe等,并使用Intersection Observer API。

您可以使用npm / Yarn包含Lozad并使用您選擇的模塊捆綁器導入它:

npm install --save lozad
yarn add lozad
import lozad from 'lozad';

或者,您可以使用CDN簡單地加載庫,并將其添加到<script>標簽中HTML頁面的底部:

<script src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script>

接下來,對于基本實現,將類lozad添加到標記中的資源:

<img data-src="img.jpg">

最后,在JS文檔中實例化Lozad:

const observer = lozad();
observer.observe();

您將找到如何使用lozad github存儲庫上的庫的所有詳細信息。

如果您不想深入了解Intersection Observer API的工作方式,或者您只是在尋找適用于各種內容類型的快速實現,那么Lozad是一個很好的選擇。

只有,請注意瀏覽器支持,并最終將此庫與Intersection Observer API的polyfill集成。

4延遲加載,模糊圖像效果

如果你是一個中等水平的讀者,你肯定已經注意到網站是如何在帖子中加載主圖片的。

您首先看到的是圖像的模糊、低分辨率副本,而它的高分辨率版本正被延遲加載,媒體網站上的高分辨率,延遲加載圖像。

您可以通過多種方式使用這種有趣的模糊效果來延遲加載圖像。

我最喜歡的技術是Craig Buckler。以下是此解決方案的所有優點:

  • 性能:只有463個字節的CSS和1,007個字節的縮小JavaScript代碼
  • 支持視網膜屏幕
  • 無依賴性:不需要jQuery或其他庫和框架
  • 逐步增強以抵消舊版瀏覽器和JavaScript失敗

5 Yall.js

Yall是一個功能豐富的延遲加載腳本,適用于圖像,視頻和iframe。更具體地說,它使用了Intersection Observer API,并在必要時巧妙地依靠傳統的事件處理程序技術。

在文檔中包含Yall時,需要按如下方式對其進行初始化:

<script src="yall.min.js"></script>
<script>
  document.addEventListener("DOMContentLoaded", yall);
</script>

接下來,要延遲加載一個簡單img元素,您需要在標記中執行的操作是:

<img src="placeholder.jpg" data-src="image-to-lazy-load.jpg" alt="Alternative text to describe image.">

請注意以下事項:

  • 您添加類慵懶的元素
  • 值src是占位符圖像
  • 要延遲加載的圖像的路徑位于data-src屬性內。

Yall的好處包括:

  • Intersection Observer API具有出色的性能
  • 神奇的瀏覽器支持(它可以追溯到IE11)
  • 沒有必要的其他依賴。

到此這篇關于網站性能延遲加載圖像的五種技巧(小結)的文章就介紹到這了,更多相關圖片延遲加載內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

標簽:永州 遼源 新疆 池州 棗莊 漯河 青島 西藏

巨人網絡通訊聲明:本文標題《網站性能延遲加載圖像的五種技巧(小結)》,本文關鍵詞  網站,性能,延遲,加載,圖像,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《網站性能延遲加載圖像的五種技巧(小結)》相關的同類信息!
  • 本頁收集關于網站性能延遲加載圖像的五種技巧(小結)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产精品51麻豆cm传媒的特点 | 亚洲伊人成人网| 亚洲欧洲日韩在线| 日本无码亚洲精品无码电影 | 中文字幕乱码亚洲精品午夜 | 校园淫文| 女人被躁的视频在线观看| 快穿之女配紧致H| 看亚洲A级一级毛片,亚洲AV片| 欧美换爱交换乱理伦片不卡片 | 国产精品久久久久久久久久久免费看| 国产精品久久久久精品香港乳瀑瀑 | 人人爱干| 亚洲国产模特在线播放| 男男chinese同志网站| 92久久偷偷做嫩草影院免费看| 樱花影院高清电影好看的| 美女老师的诱惑| 吃奶动图| 99热这里只有精品动漫| 成 人 免费 黄 色 在线观看| 啊用力太猛了啊好深视频| 国产一级做a爰片久久毛片男| 欧美电影一区二区| 蒂法浓厚3d榨取在线最终幻想截图 | 精品美女一区二区三区| 林夕雪被两个黑人| 国模欢欢炮交啪啪150p| 韩国一级牲高潮片免费| 日韩不卡1卡2卡三卡网站2021| 势不可挡小说| 免费观看黄网站色大色软件软件| 久久久亚洲熟妇熟女ⅩXXX片| 免费看成年动漫入口| 校长猛挺进小莹的体内| 嗯~啊~轻一点????酒店| 87在线无码精品秘?入口楼风| 一级毛片一一级一级乇片| 美美哒高清电影在线观看| 国产一级真人片| 天天色天天综合网|