• <big id="sbfe1"><fieldset id="sbfe1"><pre id="sbfe1"></pre></fieldset></big>
    1. <fieldset id="sbfe1"></fieldset>
        1. 91色综合综合热五月激情,2021国产精品自产拍在线,国产主播av,短篇高h肉汁文黄蓉,免费可以看的无遮挡av无码,夜夜躁日日躁狠狠久久AV,國產尤物AV尤物在線觀看 ,手机成人午夜在线视频
          網(wǎng)站建設(shè)套餐 網(wǎng)站建設(shè)作品 網(wǎng)站模板

          延遲加載圖像以提高濟南網(wǎng)站建設(shè)性能的五種方法

          2020年06月16日 14:06:20

          由于圖像是濟南網(wǎng)站建設(shè)上最流行的內(nèi)容類型之一,因此網(wǎng)站上的頁面加載時間很容易成為問題。

          即使進行了適當?shù)膬?yōu)化,圖像也可能占很大的比重。這可能會對訪問者必須等待才能訪問您網(wǎng)站上的內(nèi)容的時間產(chǎn)生負面影響。除非您想出一種不會干擾速度感知的圖像加載解決方案,否則它們很可能會耐心地在其他地方導(dǎo)航。

          在本文中,您將了解五種延遲加載圖像的方法,可以將它們添加到Web優(yōu)化工具包中以改善網(wǎng)站上的用戶體驗。

          什么是延遲加載?

          延遲加載圖像是指異步加載網(wǎng)站上的圖像-也就是說,在首屏內(nèi)容完全加載后,甚至有條件地,僅當它們出現(xiàn)在瀏覽器的視口中時。這意味著,如果用戶沒有完全向下滾動,則位于頁面底部的圖像甚至都不會被加載。

          許多網(wǎng)站都使用這種方法,但是在圖片繁多的網(wǎng)站上尤其明顯。嘗試瀏覽您最喜歡的在線狩獵場以獲得高分辨率照片,您很快就會意識到該網(wǎng)站僅加載有限數(shù)量的圖像的方式。向下滾動頁面時,您會看到占位符圖像迅速填充真實圖像進行預(yù)覽。例如,請注意下圖中的加載程序:將頁面的該部分滾動到視圖中會觸發(fā)使用全分辨率照片替換占位符:

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

          至少有兩個極好的原因,您應(yīng)該考慮為網(wǎng)站延遲加載圖像:

          • 如果您的網(wǎng)站使用JavaScript來顯示內(nèi)容或向用戶提供某種功能,則快速加載DOM變得至關(guān)重要。腳本通常要等到DOM完全加載后才能開始運行。在包含大量圖像的網(wǎng)站上,延遲加載(或異步加載圖像)可能會導(dǎo)致用戶停留或離開您的網(wǎng)站有所不同。
          • 由于大多數(shù)惰性加載解決方案都是通過僅在用戶滾動到在視口內(nèi)可見圖像的位置時才加載圖像來工作的,因此如果用戶從未到達該點,則將永遠不會加載這些圖像。這意味著可以節(jié)省大量帶寬,為此,大多數(shù)用戶,特別是那些在移動設(shè)備上訪問Web且連接緩慢的用戶,將非常感謝您。

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

          沒有完美的方法。

          如果您生活和呼吸JavaScript,那么實現(xiàn)自己的延遲加載解決方案就不會成為問題。沒有什么比您自己編寫代碼給您更多的控制權(quán)了。

          或者,您可以瀏覽Web以找到可行的方法并開始進行試驗。我就是這樣做的,并且遇到了這五種有趣的技術(shù)。

          #1本機延遲加載

          圖像和iframe的本機延遲加載非常酷。沒有什么比下面的標記更直接了:

          <img src="myimage.jpg" loading="lazy" alt="..." />
          <iframe src="content.html" loading="lazy"></iframe>
          

          如您所見,沒有JavaScript,沒有src屬性值的動態(tài)交換,只是普通的舊HTML。

          loading屬性使我們可以選擇延遲屏幕外圖像和iframe,直到用戶滾動到頁面上的位置為止。loading可以采用以下三個值之一:

           

          • lazy:非常適合延遲加載
          • eager:指示瀏覽器立即加載指定的內(nèi)容
          • auto:保留延遲加載或不延遲加載到瀏覽器的選項。

          這種方法無可匹敵:它的開銷為零,簡潔明了。但是,盡管在撰寫本文時,大多數(shù)主流瀏覽器都對該loading屬性提供了良好的支持,但并不是所有瀏覽器都支持該特性。

          要獲得有關(guān)此令人敬畏的延遲加載圖像功能的深入文章,包括瀏覽器支持的解決方法,請不要錯過Addy Osmani的“ Web的本地圖像延遲加載!”。

          #2使用Intersection Observer API的延遲加載

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

          MDN引入此API的方法如下:

          Intersection Observer API提供了一種異步觀察目標元素與祖先元素或頂級文檔的視口相交的變化的方法。

          換句話說,異步監(jiān)視的是一個元素與另一個元素的交集。

          Denys Mishunov在“相交觀察器”和使用它的延遲加載圖像方面都有很好的教程。這就是他的解決方案。

          假設(shè)您要延遲加載圖片庫。每個圖像的標記如下所示:

          <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文檔中,創(chuàng)建一個config對象并將其注冊到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);
          });
          

          該解決方案的優(yōu)點:實施起來輕而易舉,有效,并且intersectionObserver在計算方面做得很繁重。

           

          另一方面,盡管大多數(shù)瀏覽器都支持Intersection Observer API最新版本,但并非所有瀏覽器都始終支持它幸運的是,可以使用polyfill。

          您可以在Denys的文章中了解有關(guān)Intersection Observer API的更多信息以及此實現(xiàn)的詳細信息。

          #3 Lozad.js

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

          Lozad是純JavaScript中的高性能,輕量且可配置的惰性加載器,沒有任何依賴關(guān)系。您可以使用它來延遲加載圖像,視頻,iframe和更多內(nèi)容,并且它使用Intersection Observer API。

          您可以將Lozad包含在npm / Yarn中,并使用所選的模塊捆綁器將其導(dǎo)入:

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

          另外,您可以簡單地使用CDN下載該庫并將其添加到HTML頁面底部的< script>標記中:

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

          接下來,對于基本實現(xiàn),將lozad添加到標記中的資產(chǎn):

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

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

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

          您將在Lozad GitHub存儲庫中找到有關(guān)如何使用該庫的所有詳細信息

          如果您不想深入了解Intersection Observer API的工作原理,或者只是在尋找適用于各種內(nèi)容類型的快速實現(xiàn),則Lozad是一個不錯的選擇。

          僅注意瀏覽器支持,并最終將此庫與用于Intersection Observer API的polyfill集成。

          #4延遲加載具有模糊的圖像效果

          如果您是中型讀者,那么您肯定已經(jīng)注意到該網(wǎng)站如何在帖子中加載主圖像。

          您首先看到的是圖像的模糊,低分辨率副本,而其高分辨率版本則被延遲加載:

          中型網(wǎng)站上的占位符圖片模糊

          中等網(wǎng)站上的高分辨率,延遲加載的圖像

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

          我最喜歡的技術(shù)是Craig Buckler。這是此解決方案的全部優(yōu)點:

          • 性能:僅463字節(jié)的CSS和1,007字節(jié)的最小JavaScript代碼
          • 支持視網(wǎng)膜屏幕
          • 無依賴關(guān)系:不需要jQuery或其他庫和框架
          • 逐步增強功能以??抵消較舊的瀏覽器和JavaScript失敗

          您可以在“ 如何構(gòu)建自己的漸進式圖像加載器”中閱讀有關(guān)它的全部信息,并在項目的GitHub存儲庫上下載代碼。

          #5 Yall.js

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

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

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

          接下來,要延遲加載一個簡單的img元素,在標記中需要做的就是:

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

          請注意以下幾點:

          • 您將懶惰的類添加到元素
          • 的值src是一個占位符圖像
          • 您要延遲加載的圖像的路徑在data-src屬性內(nèi)部

          Yall的好處包括:

          • Intersection Observer API的出色性能
          • 出色的瀏覽器支持(可回溯到IE11)
          • 無需其他依賴項

          要了解有關(guān)Yall可以提供的內(nèi)容以及更復(fù)雜的實現(xiàn)的更多信息,請隨時查看GitHub上項目頁面。

          結(jié)論

          這樣就可以了-延遲加載圖像的五種方法,您可以開始在項目中進行試驗和測試。

          服務(wù)宗旨:客戶至上、服務(wù)保證、信用保證、售后保證、價格保證。

          在濟南找濟南網(wǎng)站建設(shè)公司就選擇我們,我們用服務(wù)保證你選擇的沒有錯誤。

          公司地址:山東省濟南市東關(guān)大街中泰大廈

          Copyright?2020-2030  www.chidangao.cn

          濟南網(wǎng)站設(shè)計我們值得信賴.

          主站蜘蛛池模板: 无码aⅴ免费中文字幕久久| 亚洲男人天堂av| 中国国产xxxx免费视频| www插插插无码免费视频网站| 最新亚洲人成网站在线影院| 97在线碰| 丁香花在线观看免费观看图片| 中国女人高潮hd| 国产亚洲视频免费播放| 国产精品久久久久久2021| 午夜精品久久久久9999高清| 猫咪AV成人永久网站在线观看| 老色99久久九九爱精品| 欧美猛少妇色xxxxx| 日韩在线天堂| 国产精品永久不卡免费视频| 在线播放深夜精品三级| 粉嫩导航| 亚洲欧洲国产一区| 131美女视频午夜免费网站| 日本一区二区三区视频版| 人妻?制服?丝袜| 窝窝av| 亚洲精品影视| 自拍视频一区二区三区四区| 国产老熟女伦老熟妇露脸| 妲己视频精品一区二区| 亚洲国产韩国精品在线| 中文字幕日韩精品有码| 亚洲国产精品狼友在线观看| 亚洲色天| 国产综合无码一区二区辣椒| 日本丰满熟妇videossexhd| 国产不卡av一区二区| 欧美日本韩国亚洲| 2021久久伊人精品中文字幕有| 亚洲黄色短视频| 久久人妻精品大屁股一区| 男人色天堂| 日韩中文字幕a| 亚洲av成人免费在线|