<center id="88t0g"></center><s id="88t0g"></s>
<blockquote id="88t0g"><rt id="88t0g"></rt></blockquote>

    
    
        <blockquote id="88t0g"></blockquote><style id="88t0g"><kbd id="88t0g"></kbd></style>
      1. 出租屋勾搭老熟妇啪啪,精品国产乱子伦一区二区三区,亚洲男女羞羞无遮挡久久丫,在线无码国产精品亚洲а∨,欧美性受xxxx白人性爽,国产一区曰韩二区欧美三区,国产成人精品无码一区二区,久久免费午夜福利院
        網(wǎng)站建設(shè)套餐 網(wǎng)站建設(shè)作品 網(wǎng)站模板

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

        2020年06月16日 14:06:20

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

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

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

        什么是延遲加載?

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

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

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

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

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

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

        沒有完美的方法。

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

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

        #1本機(jī)延遲加載

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

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

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

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

         

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

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

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

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

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

        MDN引入此API的方法如下:

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

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

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

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

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

        請(qǐng)注意,圖像的路徑是如何包含在data-src屬性(而不是src屬性)中的。原因是使用src意味著圖像將立即加載,這不是您想要的。

        在CSS中,為每個(gè)圖像賦予一個(gè)min-height值,例如100px這為每個(gè)圖像占位符(不帶src屬性的img元素)提供了一個(gè)垂直尺寸:

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

        然后,在JavaScript文檔中,創(chuàng)建一個(gè)config對(duì)象并將其注冊(cè)到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);
        });
        

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

         

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

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

        #3 Lozad.js

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

        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';
        

        另外,您可以簡(jiǎn)單地使用CDN下載該庫(kù)并將其添加到HTML頁(yè)面底部的< script>標(biāo)記中:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        #5 Yall.js

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

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

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

        接下來,要延遲加載一個(gè)簡(jiǎn)單的img元素,在標(biāo)記中需要做的就是:

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

        請(qǐng)注意以下幾點(diǎn):

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

        Yall的好處包括:

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

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

        結(jié)論

        這樣就可以了-延遲加載圖像的五種方法,您可以開始在項(xiàng)目中進(jìn)行試驗(yàn)和測(cè)試。

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

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

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

        Copyright?2020-2030  www.ahwh120.cn

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

        主站蜘蛛池模板: 免费无码中文字幕A级毛片| 天天摸日日摸狠狠添| 91免费网站在线观看| 久久88香港三级台湾三级播放| 青青操影院| 国产成人麻豆亚洲综合无码精品| 无码久久久| 亚洲大尺度无码专区尤物| 精品人妻一区二区三区在线视频不卡| 国产黄色短视频| 亚洲乱码伦av| 久久久久99精品成人片毛片| 爆乳2把你榨干哦ova在线观看| 福利一区福利二区微拍刺激| 巨胸不知火舞露双奶头无遮挡| 香蕉福利导航| 十大看b站直播| 日韩经典午夜福利发布| 久久精品一本到99热免费| 久久国产一区二区日韩av| 中文精品无码中文字幕无码专区| 木里| 婷婷五月综合激情| 亚洲成人视频| 视频一区二区三区刚刚碰| 国产亚洲婷婷香蕉久久精品| 国产色老妇在线精品| 手机看片福利日韩国产| 亚洲五月综合| 日韩色图区| www内射国产在线观看| 久久国模| 久久久久国产一级毛片高清版A | 无码人妻一区二区三区免费N鬼沢| 日韩电影精品| 国产极品美女高潮抽搐免费网站| av资源吧| 免费久久人人爽人人爽AV| 国产亚洲国产精品二区| a毛片在线看片免费看| 亚洲黄色第一页在线观看|