日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机网络时延图,计算机网络中网站性能延迟加载图像的示例分析

發(fā)布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机网络时延图,计算机网络中网站性能延迟加载图像的示例分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

計算機(jī)網(wǎng)絡(luò)中網(wǎng)站性能延遲加載圖像的示例分析

發(fā)布時間:2021-06-09 11:38:56

來源:億速云

閱讀:95

作者:小新

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

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

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

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

什么是延遲加載?

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

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

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

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

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

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

沒有完美的方式。

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

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

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

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

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

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

換句話說,異步觀察的是一個元素與另一個元素的交集。

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

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

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

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

min-height:?100px;

...more?styles?here

}

在JavaScript文檔中,然后創(chuàng)建一個配置對象,并將其注冊到一個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í)現(xiàn)起來很容易,很有效,并且讓intersectionObserver在計算方面做大量的工作。

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

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

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

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

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

這種技術(shù)有許多優(yōu)點(diǎn):漸進(jìn)增強(qiáng)方法可確保用戶始終可以訪問內(nèi)容。

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

它延遲加載滾動圖像,因此如果用戶不滾動到瀏覽器中的位置,則不會加載所有圖像。

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

3 Lozad.js

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

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

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

yarn?add?lozad

import?lozad?from?'lozad';

或者,您可以使用CDN簡單地加載庫,并將其添加到

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

最后,在JS文檔中實(shí)例化Lozad:const?observer?=?lozad();

observer.observe();

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

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

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

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

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

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

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

我最喜歡的技術(shù)是Craig Buckler。以下是此解決方案的所有優(yōu)點(diǎn):性能:只有463個字節(jié)的CSS和1,007個字節(jié)的縮小JavaScript代碼

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

無依賴性:不需要jQuery或其他庫和框架

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

5 Yall.js

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

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

document.addEventListener("DOMContentLoaded",?yall);

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

請注意以下事項(xiàng):您添加類慵懶的元素

值src是占位符圖像

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

Yall的好處包括:Intersection Observer API具有出色的性能

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

沒有必要的其他依賴。

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

總結(jié)

以上是生活随笔為你收集整理的计算机网络时延图,计算机网络中网站性能延迟加载图像的示例分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。