1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      計(jì)算機(jī)網(wǎng)絡(luò)中網(wǎng)站性能延遲加載圖像的示例分析

      這篇文章給大家分享的是有關(guān)計(jì)算機(jī)網(wǎng)絡(luò)中網(wǎng)站性能延遲加載圖像的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

      網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了二道江免費(fèi)建站歡迎大家使用!

      由于圖片是web上最流行的內(nèi)容類型之一,因此網(wǎng)站的頁(yè)面加載時(shí)間很容易成為一個(gè)問(wèn)題。

      即使經(jīng)過(guò)適當(dāng)?shù)膬?yōu)化,圖像也會(huì)有相當(dāng)大的重量。這可能會(huì)對(duì)訪問(wèn)者在訪問(wèn)網(wǎng)站內(nèi)容之前等待的時(shí)間產(chǎn)生負(fù)面影響。很有可能,它們會(huì)失去耐心,轉(zhuǎn)向其他地方,除非你能想出一個(gè)不影響速度感知的圖像加載解決方案。

      在本文中,您將學(xué)習(xí)有關(guān)延遲加載圖像的五種方法,您可以將這些方法添加到web優(yōu)化工具包中,以改進(jìn)站點(diǎn)上的用戶體驗(yàn)。

      什么是延遲加載?

      延遲加載圖像意味著在網(wǎng)站上異步加載圖像——也就是說(shuō),在網(wǎng)站上面的折疊內(nèi)容完全加載之后,甚至僅當(dāng)它們出現(xiàn)在瀏覽器的視區(qū)中時(shí),才有條件地加載它們。這意味著,如果用戶不一直向下滾動(dòng),那么放在頁(yè)面底部的圖像甚至不會(huì)被加載。

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

      為什么要關(guān)心延遲加載圖像?

      至少有兩個(gè)很好的理由可以讓你考慮延遲的為你的網(wǎng)站加載圖像:

      • 如果您的網(wǎng)站使用JavaScript來(lái)顯示內(nèi)容或向用戶提供某種功能,那么加載DOM很快就變得至關(guān)重要。腳本在開始運(yùn)行之前,通常要等到DOM完全加載之后才開始運(yùn)行。在有大量圖像的站點(diǎn)上,延遲加載-或異步加載圖像-可能會(huì)在用戶停留或離開您的站點(diǎn)之間產(chǎn)生差異。

      • 由于大多數(shù)延遲加載解決方案只在用戶滾動(dòng)到在視區(qū)中可以看到圖像的位置時(shí)加載圖像,因此如果用戶從未到達(dá)該點(diǎn),則永遠(yuǎn)不會(huì)加載這些圖像。這意味著節(jié)省了大量的帶寬,大多數(shù)用戶,尤其是那些在移動(dòng)設(shè)備和慢速連接上訪問(wèn)網(wǎng)絡(luò)的用戶,都會(huì)感謝您。

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

      沒(méi)有完美的方式。

      如果您使用JavaScript,那么實(shí)現(xiàn)您自己的延遲加載解決方案應(yīng)該不成問(wèn)題。沒(méi)有什么比自己編寫代碼更能讓你控制了。

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

      1使用Intersection Observer API進(jìn)行延遲加載

      Intersection Observer API是一個(gè)現(xiàn)代化的界面,你可以利用它來(lái)延遲加載圖像和其他內(nèi)容。

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

      Intersection Observer API提供了一種異步觀察目標(biāo)元素與祖先元素或頂級(jí)文檔視口交叉的方法。
      換句話說(shuō),異步觀察的是一個(gè)元素與另一個(gè)元素的交集。

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

      假設(shè)您想懶得加載圖片庫(kù)。每個(gè)圖像的標(biāo)記如下所示:

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

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

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

      在JavaScript文檔中,然后創(chuàng)建一個(gè)配置對(duì)象,并將其注冊(cè)到一個(gè)intersectionObserver實(shí)例中:

      // 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實(shí)例:

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

      這個(gè)解決方案的優(yōu)點(diǎn)是:實(shí)現(xiàn)起來(lái)很容易,很有效,并且讓intersectionObserver在計(jì)算方面做大量的工作。

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

      2 Robin Osborne逐步增強(qiáng)的延遲加載

      羅賓·奧斯本提出了一個(gè)基于漸進(jìn)增強(qiáng)的超級(jí)巧妙的解決方案。在這種情況下,使用JavaScript實(shí)現(xiàn)的延遲加載本身被認(rèn)為是對(duì)常規(guī)HTML和CSS的增強(qiáng)。

      漸進(jìn)增強(qiáng)的原因嗎?那么,如果使用基于JavaScript的解決方案顯示圖像,如果禁用JavaScript或發(fā)生錯(cuò)誤阻止腳本正常工作,會(huì)發(fā)生什么情況呢?在這種情況下,如果沒(méi)有漸進(jìn)的增強(qiáng),用戶很可能根本看不到圖像。不酷。

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

      這種技術(shù)有許多優(yōu)點(diǎn):

      • 漸進(jìn)增強(qiáng)方法可確保用戶始終可以訪問(wèn)內(nèi)容。

      • 它不僅適用于JavaScript不可用的情況,而且還適用于JavaScript 崩潰的情況:我們都知道容易出錯(cuò)的腳本,特別是在運(yùn)行大量腳本的環(huán)境中。

      • 它延遲加載滾動(dòng)圖像,因此如果用戶不滾動(dòng)到瀏覽器中的位置,則不會(huì)加載所有圖像。

      • 它不依賴于任何外部依賴,因此不需要框架或插件。

      3 Lozad.js

      實(shí)現(xiàn)延遲加載圖像的一種快速簡(jiǎn)便的替代方法是讓JS庫(kù)為您完成大部分工作。

      Lozad是純JavaScript中高性能,輕量級(jí)和可配置的延遲加載器,沒(méi)有依賴關(guān)系。您可以使用它來(lái)延遲加載圖像,視頻,iframe等,并使用Intersection Observer API。

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

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

      或者,您可以使用cdn簡(jiǎn)單地加載庫(kù),并將其添加到

      接下來(lái),對(duì)于基本實(shí)現(xiàn),將類lozad添加到標(biāo)記中的資源:

      最后,在JS文檔中實(shí)例化Lozad:

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

      您將找到如何使用lozad github存儲(chǔ)庫(kù)上的庫(kù)的所有詳細(xì)信息。

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

      只有,請(qǐng)注意瀏覽器支持,并最終將此庫(kù)與Intersection Observer API的polyfill集成。

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

      如果你是一個(gè)中等水平的讀者,你肯定已經(jīng)注意到網(wǎng)站是如何在帖子中加載主圖片的。

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

      您可以通過(guò)多種方式使用這種有趣的模糊效果來(lái)延遲加載圖像。

      我最喜歡的技術(shù)是Craig Buckler。以下是此解決方案的所有優(yōu)點(diǎn):

      • 性能:只有463個(gè)字節(jié)的CSS和1,007個(gè)字節(jié)的縮小JavaScript代碼

      • 支持視網(wǎng)膜屏幕

      • 無(wú)依賴性:不需要jQuery或其他庫(kù)和框架

      • 逐步增強(qiáng)以抵消舊版瀏覽器和JavaScript失敗

      5 Yall.js

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

      在文檔中包含Yall時(shí),需要按如下方式對(duì)其進(jìn)行初始化:

      接下來(lái),要延遲加載一個(gè)簡(jiǎn)單img元素,您需要在標(biāo)記中執(zhí)行的操作是:

      請(qǐng)注意以下事項(xiàng):

      • 您添加類慵懶的元素

      • 值src是占位符圖像

      • 要延遲加載的圖像的路徑位于data-src屬性內(nèi)。

      Yall的好處包括:

      • Intersection Observer API具有出色的性能

      • 神奇的瀏覽器支持(它可以追溯到IE11)

      • 沒(méi)有必要的其他依賴。

      感謝各位的閱讀!關(guān)于“計(jì)算機(jī)網(wǎng)絡(luò)中網(wǎng)站性能延遲加載圖像的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


      網(wǎng)站名稱:計(jì)算機(jī)網(wǎng)絡(luò)中網(wǎng)站性能延遲加載圖像的示例分析
      鏈接URL:http://ef60e0e.cn/article/gchcjs.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        衡阳县| 景德镇市| 洞头县| 上饶市| 旅游| 大理市| 丁青县| 岚皋县| 新野县| 玉溪市| 大丰市| 宽甸| 汝城县| 西乡县| 高雄市| 浦东新区| 阳信县| 章丘市| 财经| 宕昌县| 星子县| 金溪县| 沧源| 新泰市| 甘泉县| 齐齐哈尔市| 桓台县| 监利县| 平阳县| 灵丘县| 霞浦县| 邢台县| 健康| 泽普县| 峨眉山市| 西林县| 左云县| 景泰县| 禹城市| 铜山县| 石景山区|