摘要:表示當所有資源都加載完后,開始預加載這里指定的資源,有最低的優先級。其他方面的測試,目前還沒有很好的方案,暫且只能通過查看瀏覽器是否緩存來測試。警告這些特定還是實驗性質的,將來可能改變。權利越大,責任越大,不要濫用參考鏈接
原文:HTML5 Prefetch
作者:Luis Vieira
譯文:HTML5 prefetch
譯者:@賴小賴小賴
聲明:此文帶著自己的理解,不完全按原文翻譯
prefetch 即預加載,在用戶需要前我們就將所需的資源加載完畢。
有了瀏覽器緩存,為何還需要預加載?用戶可能是第一次訪問網站,此時還無緩存
用戶可能清空了緩存
緩存可能已經過期,資源將重新加載
用戶訪問的緩存文件可能不是最新的,需要重新加載
Chrome 的預加載技術現在的 chrome 聰明到根據你的瀏覽記錄,預測到你可能訪問或搜索哪些網站,在你打開網站之前就加載好了一些資源了。
舉個栗子,當你在搜索框輸入 "amaz" 時,它猜測到你可能要訪問 amazon.com,可能就幫你加載了這個網站的一些資源。
如果這個預測算法精準的話,就能大大地提高用戶的瀏覽體驗了。
DNS prefetch我們知道,當我們訪問一個網站如 www.amazon.com 時,需要將這個域名先轉化為對應的 IP 地址,這是一個非常耗時的過程。
DNS prefetch 分析這個頁面需要的資源所在的域名,瀏覽器空閑時提前將這些域名轉化為 IP 地址,真正請求資源時就避免了上述這個過程的時間。
應用場景1:我們的資源存在在不同的 CDN 中,那提前聲明好這些資源的域名,就可以節省請求發生時產生的域名解析的時間。
應用場景2:如果我們知道用戶接下來的操作一定會發起一起資源的請求,那就可以將這個資源進行 DNS-Prefetch,加強用戶體驗。
Resource prefetch在 Chrome 下,我們可以用 link 標簽聲明特定文件的預加載:
在 Firefox 中或用 meta 標簽聲明:
rel="subresource" 表示當前頁面必須加載的資源,應該放到頁面最頂端先加載,有最高的優先級。
rel="prefetch" 表示當 subresource 所有資源都加載完后,開始預加載這里指定的資源,有最低的優先級。
注意:只有可緩存的資源才進行預加載,否則浪費資源!
Pre render前面說到的預解析 DNS、預加載資源已經夠強悍了有木有,可還有更厲害的預渲染(Pre-rendering)!
預渲染意味著我們提前加載好用戶即將訪問的下一個頁面,否則進行預渲染這個頁面將浪費資源,慎用!
rel="prerender" 表示瀏覽器會幫我們渲染但隱藏指定的頁面,一旦我們訪問這個頁面,則秒開了!
在 Firefox 中或用 rel="next" 來聲明
不是所有的資源都可以預加載
當資源為以下列表中的資源時,將阻止預渲染操作:
URL 中包含下載資源
頁面中包含音頻、視頻
POST、PUT 和 DELETE 操作的 ajax 請求
HTTP 認證(Authentication)
HTTPS 頁面
含惡意軟件的頁面
彈窗頁面
占用資源很多的頁面
打開了 chrome developer tools 開發工具
手動觸發預渲染操作在 head 中強勢插入 link[rel="prerender"] 即可:
var hint =document.createElement("link") hint.setAttribute(“rel”,”prerender”) hint.setAttribute(“href”,”next-page.html”) document.getElementsByTagName(“head”)[0].appendChild(hint)兼容性
這么好用的特性,當然要考慮各瀏覽器的兼容程度了(哭:
IE9 支持 DNS pre-fetching 但管它叫 prefetch。
IE10+ 中 dns-prefetch 和 prefetch 是等價的。
其他方面的測試,目前還沒有很好的方案,暫且只能通過查看瀏覽器是否緩存來測試。
在 Chrome 中打開了 chrome developer tools 開發工具會阻止頁面的預渲染,所以我們看不到這個過程,但可以在 chrome://cache/ 或 chrome://net-internals/#prerender 中查看。
Firefox 可以在 about:cache 中查看。
警告這些特定還是實驗性質的,將來可能改變。
權利越大,責任越大,不要濫用!
參考鏈接
html5-prefetch
MDN Controlling DNS prefetching
MDN Link prefetching FAQ
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/49526.html
摘要:前端日報精選使用實現和交互的彈幕效果類型檢測理解的閉包深入理解之代理和反射,和它們在之中的優先級中文譯區塊鏈是如何工作的用演示知乎專欄譯怎樣處理移動端對圖片資源的限制掘金技術周刊的正則表達式掘金開發環境搭建掘金與復雜業務組件的 2017-09-11 前端日報 精選 使用canvas實現和HTML5 video交互的彈幕效果【JS】類型檢測理解 JavaScript 的閉包深入理解ES6...
摘要:當然并不是所有的頁面需要用到的外部域名都需要做這樣的域名解析,瀏覽器默認會解析超鏈接屬性的里面的域名,并且你的網站域名還不能是,如果是,則需要設置請求頭或加入一段強制開啟域名解析的標簽。 廢話:異步加載和預加載一直都是前端優化必備技能之一,今天我們就來深度解析一下常用的幾個關鍵點。 異步加載 廢話不多說,任何長篇大論的教程都抵不過一張清晰明了的高清大圖來得好: showImg(http...
閱讀 1938·2021-11-24 09:39
閱讀 3278·2021-09-22 14:58
閱讀 1162·2019-08-30 15:54
閱讀 3315·2019-08-29 11:33
閱讀 1788·2019-08-26 13:54
閱讀 1598·2019-08-26 13:35
閱讀 2468·2019-08-23 18:14
閱讀 762·2019-08-23 17:04