日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

js中延遲加載和預加載的具體使用

瀏覽:136日期:2024-04-07 18:05:19

延遲加載(懶加載)和預加載是常用的 web 優化的手段。。

一、延遲加載(懶加載)

原理: 當在真正需要數據的時候,才真正執行數據加載操作。目的: 延遲加載機制是為了避免一些無謂的性能開銷而提出來的

實現延遲加載的幾種方法1. 讓 js 最后加載

使用方法: 把 js 外部引入的文件放到頁面底部用途: 讓 js 最后引入,從而加快頁面加載速度說明:流覽器之所以會采用同步模式,通常加載 js 文件或者放<script>標簽都在結構最后面,也是因為它會阻止瀏覽器后續操作的原因,所以放在后面,當頁面結構和樣式全部渲染完成再執行 js,提升用戶體驗

2. defer 屬性

使用方法: 為 <script>標簽定義了 defer屬性。用途: 讓腳本在執行時不會影響頁面的構造。也就是說,腳本會被延遲到整個頁面都解析完畢之后再執行

<!DOCTYPE html><html><head> <script src='http://www.b3g6.com/bcjs/test1.js' defer='defer'></script> <script src='http://www.b3g6.com/bcjs/test2.js' defer='defer'></script></head><body><!-- 這里放內容 --></body></html>

說明:

雖然<script>元素放在了<head>元素中,但包含的腳本將延遲瀏覽器遇到</html>標簽后再執行。 當瀏覽器解析到 script 腳本,有 defer 時,瀏覽器會并行下載有 defer 屬性的 script,而不會阻塞頁面后續處理。 所有的 defer 腳本保證是按順序依次執行的。(但實際上延遲腳本并不一定會按照順序執行,因此最好只包含一個延遲腳本) defer 屬性只適用于外部腳本文件。3. async 屬性

使用方法: 為 <script>標簽定義了 async屬性。用途: 不讓頁面等待腳本下載和執行,從而異步加載頁面其他內容。

<!DOCTYPE html><html><head> <script src='http://www.b3g6.com/bcjs/test1.js' async></script> <script src='http://www.b3g6.com/bcjs/test2.js' async></script></head><body><!-- 這里放內容 --></body></html>

瀏覽器會立即下載腳本,但不妨礙頁面中的其他操作,比如下載其他資源或等待加載其他腳本。加載和渲染后續文檔元素的過程和 main.js 的加載與執行并行進行,這個過程是異步的。它們將在 onload 事件之前完成。

說明:

瀏覽器會立即下載腳本,但不妨礙頁面中的其他操作,加載和渲染后續文檔元素的過程和腳本的加載與執行并行進行。 這個過程是異步的,它們將在 onload 事件之前完成。 所有的 defer 腳本不能控制加載的順序。。 asyncr 屬性只適用于外部腳本文件。4. 動態創建 DOM 方式

//這些代碼應被放置在</body>標簽前(接近HTML文件底部)<script type='text/javascript'> function downloadJSAtOnload() { varelement = document.createElement('script'); element.src = 'http://www.b3g6.com/bcjs/defer.js'; document.body.appendChild(element); } if (window.addEventListener) window.addEventListener('load',downloadJSAtOnload, false); else if (window.attachEvent) window.attachEvent('onload',downloadJSAtOnload); else window.onload =downloadJSAtOnload;</script>5. 使用 jquery 的 getScript 方法

使用方法:

Query.getScript(url,success(response,status)) url(必寫):將要請求的 URL 字符串 success(response,status)(可選):規定請求成功后執行的回調函數。

其中的參數response - 包含來自請求的結果數據status - 包含請求的狀態('success', 'notmodified', 'error', 'timeout' 或 'parsererror')

用途: 通過 HTTP GET 請求載入并執行 JavaScript 文件。

//加載并執行 test.js:$.getScript('test.js');//加載并執行 test.js ,成功后顯示信息$.getScript('test.js', function(){ alert('Script loaded and executed.');});6.使用 setTimeout 延遲方法的加載時間

用途: 延遲加載 js 代碼,給網頁加載留出時間

<script type='text/javascript'> function A(){ $.post('/lord/login',{name:username,pwd:password},function(){ alert('Hello World!'); }) } $(function (){ setTimeout('A()',1000); //延遲1秒 })</script>常用實例 - 圖片懶加載

原理: 一張圖片就是一個<img>標簽,瀏覽器是否發起請求圖片是根據<img>的 src 屬性,所以實現懶加載的關鍵就是,在圖片沒有進入可視區域時,先不給<img>的 src 賦值,這樣瀏覽器就不會發送請求了,等到圖片進入可視區域再給 src 賦值。

<img src='http://www.b3g6.com/bcjs/img/loading.gif' lazy-src='http://www.b3g6.com/bcjs/img/pic1.jpg' ><img src='http://www.b3g6.com/bcjs/img/loading.gif' lazy-src='http://www.b3g6.com/bcjs/img/pic2.jpg' >

function lazyload(){ var visible; $(’img’).each(function () { if( typeof($(this).attr('lazy-src'))!='undefined' ){ // 判斷圖片是否需要懶加載 visible = $(this).offset().top - $(window).scrollTop(); //圖片距離頂部的距離 if ((visible > 0) && (visible < $(window).height())) {// 判斷圖片是否在可視區域 visible = true;// 圖片在可視區域 } else { visible = false;// 圖片不在可視區域 } if (visible) { $(this).attr(’src’, $(this).attr(’lazy-src’)); } } });} // 打開頁面觸發函數 lazyload(); // 滾屏時觸發函數 window.onscroll =function(){ lazyload(imgs); }二、 預加載

原理: 提前加載圖片,當用戶需要查看時可直接從本地緩存中渲染目的: 犧牲前端性能,換取用戶體驗,使用戶的操作得到最快的反映。

實現預加載的幾種方法1. css 實現

原理: 可通過 CSS 的background 屬性 將圖片預加載到屏幕外的背景上。只要這些圖片的路徑保持不變 ,當它們在 Web 頁面的其他地方被調用時,瀏覽器就會在渲染過程中使用預加載(緩存)的圖片。簡單、高效,不需要任何 JavaScript。

#preload-01 { background: url(http://domain.tld/image-01.png) no-repeat -9999px -9999px; }#preload-02 { background: url(http://domain.tld/image-02.png) no-repeat -9999px -9999px; }#preload-03 { background: url(http://domain.tld/image-03.png) no-repeat -9999px -9999px; }2. js 預加載圖片

原理: 通過寫函數進行預加載。將該腳本封裝入一個函數中,并使用 addLoadEvent(),延遲預加載時間,直到頁面加載完畢。

function preloader() { if (document.images) { var img1 = new Image(); var img2 = new Image(); var img3 = new Image(); img1.src = 'http://domain.tld/path/to/image-001.gif'; img2.src = 'http://domain.tld/path/to/image-002.gif'; img3.src = 'http://domain.tld/path/to/image-003.gif'; }}function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != ’function’) { window.onload = func; } else { window.onload = function() { if (oldonload) {oldonload(); } func(); } }}addLoadEvent(preloader);3. 使用 ajax 實現預加載

原理: 使用 Ajax 實現圖片預加載的方法,利用 DOM,不僅僅預加載圖片,還會預加載 CSS、JavaScript 等相關的東西

window.onload = function() { setTimeout(function() { // XHR to request a JS and a CSS var xhr = new XMLHttpRequest(); xhr.open(’GET’, ’http://domain.tld/preload.js’); xhr.send(’’); xhr = new XMLHttpRequest(); xhr.open(’GET’, ’http://domain.tld/preload.css’); xhr.send(’’); // preload image new Image().src = 'http://domain.tld/preload.png'; }, 1000);};

上面代碼預加載了“preload.js”、“preload.css”和“preload.png”。1000 毫秒的超時是為了防止腳本掛起,而導致正常頁面出現功能問題。

三、 懶加載與預加載的對比1、概念

延遲加載也叫懶加載: 當在真正需要數據的時候,才真正執行數據加載操作。預加載:提前加載,當用戶需要查看時可直接從本地緩存中渲染

2、區別 兩種技術的本質:兩者的行為相反,一個是提前加載,一個是遲緩甚至不加載。 懶加載會對前端有一定的緩解壓力作用,預加載則會增加前端的壓力。3、意義

懶加載的主要目的是優化前端性能,減少請求數或延遲請求數。預加載是犧牲前端性能,換取用戶體驗,使用戶的操作得到最快的反映。

四、 參考資料

【1】https://www.jb51.net/article/154930.htm【2】https://www.jb51.net/article/57579.htm

到此這篇關于js中延遲加載和預加載的具體使用的文章就介紹到這了,更多相關js中延遲加載和預加載內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本不卡视频在线| 国产一区二区视频在线看| 日韩欧美1区| 精品一区二区三区亚洲| 美女国产一区二区三区| 国产精品极品在线观看| 精品三级av| 国产日韩三级| 日韩二区三区在线观看| 日韩欧美中文字幕电影| 日韩精品亚洲aⅴ在线影院| 欧美亚洲自偷自偷| 精品视频国产| 蜜桃成人精品| 午夜国产精品视频免费体验区| 蜜臀91精品国产高清在线观看| 一区三区视频| 亚洲午夜久久| 久久国产人妖系列| 国产精品最新| 国产成人精品一区二区三区免费 | 91欧美日韩| 国产66精品| 日本不卡一二三区黄网| 国产极品嫩模在线观看91精品| 久久精品一区二区国产| 麻豆mv在线观看| 欧美日韩黑人| 日韩精品欧美精品| 免费亚洲婷婷| 久久精品青草| 亚洲精选久久| 欧美韩一区二区| 精品国模一区二区三区| 久久xxxx精品视频| 久久av免费看| 久久久久国产| 亚洲免费福利一区| 欧美精品99| 精品中文字幕一区二区三区av| 一区二区高清| 国产一区二区三区四区| 在线看片不卡| 麻豆精品视频在线观看视频| 亚洲午夜精品久久久久久app| 亚洲精品少妇| 黄色在线观看www| 亚洲精品女人| 国产在线观看www| 最新国产精品视频| 老牛影视精品| 亚洲精品高潮| 久久男人天堂| 综合激情在线| 麻豆精品久久久| 在线视频免费在线观看一区二区| 国产精品亚洲综合久久| 不卡视频在线| 久久99蜜桃| 中文国产一区| 精品国产aⅴ| 综合激情婷婷| 成人羞羞视频播放网站| 日本在线一区二区三区| 中文另类视频| 国产亚洲欧美日韩精品一区二区三区| 91综合网人人| 五月激激激综合网色播| 精品捆绑调教一区二区三区| 日韩精品中文字幕一区二区| 不卡福利视频| 日本中文字幕一区二区| 久久精品av| 欧美经典一区| 综合干狼人综合首页| 欧美一区久久久| 久久精品999| 日韩视频免费| 国产一区二区三区四区| 97久久超碰| 亚洲一区日本| 日本不良网站在线观看| 久久激情综合网| 丝袜美腿成人在线| 国产成人精品亚洲线观看| 亚洲狼人精品一区二区三区| 日韩成人亚洲| 精品久久97| 国产精品视频一区二区三区| 亚洲一区二区av| 欧美在线亚洲| 久久五月天小说| 国内自拍视频一区二区三区| 国产丝袜一区| 综合欧美亚洲| 视频在线观看一区二区三区| 欧美freesex黑人又粗又大| 美女毛片一区二区三区四区最新中文字幕亚洲 | av资源中文在线天堂| 91精品在线免费视频| 亚洲深夜福利在线观看| 亚洲精品97| 欧美 日韩 国产一区二区在线视频 | 国产91在线播放精品| 日本麻豆一区二区三区视频| 影院欧美亚洲| 欧美成人精品| 久久网站免费观看| 欧美日韩免费看片| 中文在线资源| 国产高潮在线| 中文字幕在线官网| 国产aⅴ精品一区二区四区| 麻豆一区二区99久久久久| 国产亚洲欧美日韩精品一区二区三区| 日韩三区四区| 日韩高清在线不卡| 日精品一区二区三区| 午夜亚洲一区| 婷婷色综合网| 婷婷综合亚洲| 欧美精品激情| 99国产精品久久久久久久| 国产综合亚洲精品一区二| 久久香蕉国产| 亚洲免费精品| 另类亚洲自拍| 欧美综合国产| 亚洲精品欧美| 日韩av不卡一区二区| 91精品在线免费视频| 国产精品一卡| 高清在线一区| 伊人久久av| 日本久久成人网| 国产一区日韩一区| 欧美日韩精品一本二本三本 | 日本免费在线视频不卡一不卡二| 日韩精品a在线观看91| 欧美日韩一区二区三区在线电影| 日韩欧美中文字幕一区二区三区 | 亚洲人成高清| 国产亚洲高清一区| 蜜桃精品视频| 久久蜜桃精品| 国产精品毛片| 亚洲香蕉久久| 国产日韩一区二区三区在线播放| 欧美日韩一区二区三区四区在线观看| 久久的色偷偷| 久久影院午夜精品| 免费精品国产的网站免费观看| 男人的天堂久久精品| 欧美偷窥清纯综合图区| 四季av一区二区凹凸精品| 亚洲午夜一级| 亚洲精品韩国| 国产成人精品一区二区免费看京| 久久中文字幕二区| 蜜桃视频在线观看一区| 日韩高清成人在线| 成人在线免费观看91| 野花国产精品入口| 国产日韩三级| 久久精品观看| 亚洲精品第一| 日韩成人精品一区| 中文亚洲免费| 国产欧美成人| 日韩欧美字幕| 亚洲一区二区日韩| 国产精品香蕉| 99成人在线视频| 日韩美女国产精品| 福利一区二区三区视频在线观看| 久久精品不卡| 日本少妇一区二区| 日韩中文影院| 亚久久调教视频| 国产黄大片在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美日韩国产v| 亚洲精品第一| а√天堂8资源在线| 综合在线一区| 中文一区一区三区高中清不卡免费| 欧美精品羞羞答答| 国产丝袜一区| 亚洲精品成人| 精品国产乱码久久久| 中文不卡在线| 国产精品蜜芽在线观看| 视频一区视频二区中文| 色综合五月天| 日韩1区2区日韩1区2区| 免费视频亚洲| 国产一区一一区高清不卡| 丝袜美腿亚洲色图| 午夜精品成人av| 国产精品主播|