成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[譯] HTML5 prefetch

hss01248 / 2071人閱讀

摘要:表示當(dāng)所有資源都加載完后,開始預(yù)加載這里指定的資源,有最低的優(yōu)先級(jí)。其他方面的測(cè)試,目前還沒有很好的方案,暫且只能通過(guò)查看瀏覽器是否緩存來(lái)測(cè)試。警告這些特定還是實(shí)驗(yàn)性質(zhì)的,將來(lái)可能改變。權(quán)利越大,責(zé)任越大,不要濫用參考鏈接

原文:HTML5 Prefetch
作者:Luis Vieira
譯文:HTML5 prefetch
譯者:@賴小賴小賴

  

聲明:此文帶著自己的理解,不完全按原文翻譯

prefetch 即預(yù)加載,在用戶需要前我們就將所需的資源加載完畢。

有了瀏覽器緩存,為何還需要預(yù)加載?

用戶可能是第一次訪問網(wǎng)站,此時(shí)還無(wú)緩存

用戶可能清空了緩存

緩存可能已經(jīng)過(guò)期,資源將重新加載

用戶訪問的緩存文件可能不是最新的,需要重新加載

Chrome 的預(yù)加載技術(shù)

現(xiàn)在的 chrome 聰明到根據(jù)你的瀏覽記錄,預(yù)測(cè)到你可能訪問或搜索哪些網(wǎng)站,在你打開網(wǎng)站之前就加載好了一些資源了。

舉個(gè)栗子,當(dāng)你在搜索框輸入 "amaz" 時(shí),它猜測(cè)到你可能要訪問 amazon.com,可能就幫你加載了這個(gè)網(wǎng)站的一些資源。

如果這個(gè)預(yù)測(cè)算法精準(zhǔn)的話,就能大大地提高用戶的瀏覽體驗(yàn)了。

DNS prefetch

我們知道,當(dāng)我們?cè)L問一個(gè)網(wǎng)站如 www.amazon.com 時(shí),需要將這個(gè)域名先轉(zhuǎn)化為對(duì)應(yīng)的 IP 地址,這是一個(gè)非常耗時(shí)的過(guò)程。

DNS prefetch 分析這個(gè)頁(yè)面需要的資源所在的域名,瀏覽器空閑時(shí)提前將這些域名轉(zhuǎn)化為 IP 地址,真正請(qǐng)求資源時(shí)就避免了上述這個(gè)過(guò)程的時(shí)間。







應(yīng)用場(chǎng)景1:我們的資源存在在不同的 CDN 中,那提前聲明好這些資源的域名,就可以節(jié)省請(qǐng)求發(fā)生時(shí)產(chǎn)生的域名解析的時(shí)間。

應(yīng)用場(chǎng)景2:如果我們知道用戶接下來(lái)的操作一定會(huì)發(fā)起一起資源的請(qǐng)求,那就可以將這個(gè)資源進(jìn)行 DNS-Prefetch,加強(qiáng)用戶體驗(yàn)。

Resource prefetch

在 Chrome 下,我們可以用 link 標(biāo)簽聲明特定文件的預(yù)加載:





在 Firefox 中或用 meta 標(biāo)簽聲明:


rel="subresource" 表示當(dāng)前頁(yè)面必須加載的資源,應(yīng)該放到頁(yè)面最頂端先加載,有最高的優(yōu)先級(jí)。

rel="prefetch" 表示當(dāng) subresource 所有資源都加載完后,開始預(yù)加載這里指定的資源,有最低的優(yōu)先級(jí)。

注意:只有可緩存的資源才進(jìn)行預(yù)加載,否則浪費(fèi)資源!

Pre render

前面說(shuō)到的預(yù)解析 DNS、預(yù)加載資源已經(jīng)夠強(qiáng)悍了有木有,可還有更厲害的預(yù)渲染(Pre-rendering)!

預(yù)渲染意味著我們提前加載好用戶即將訪問的下一個(gè)頁(yè)面,否則進(jìn)行預(yù)渲染這個(gè)頁(yè)面將浪費(fèi)資源,慎用!


rel="prerender" 表示瀏覽器會(huì)幫我們渲染但隱藏指定的頁(yè)面,一旦我們?cè)L問這個(gè)頁(yè)面,則秒開了!

在 Firefox 中或用 rel="next" 來(lái)聲明


不是所有的資源都可以預(yù)加載

當(dāng)資源為以下列表中的資源時(shí),將阻止預(yù)渲染操作:

URL 中包含下載資源

頁(yè)面中包含音頻、視頻

POST、PUT 和 DELETE 操作的 ajax 請(qǐng)求

HTTP 認(rèn)證(Authentication)

HTTPS 頁(yè)面

含惡意軟件的頁(yè)面

彈窗頁(yè)面

占用資源很多的頁(yè)面

打開了 chrome developer tools 開發(fā)工具

手動(dòng)觸發(fā)預(yù)渲染操作

head 中強(qiáng)勢(shì)插入 link[rel="prerender"] 即可:

var hint =document.createElement("link")
hint.setAttribute(“rel”,”prerender”)
hint.setAttribute(“href”,”next-page.html”)
document.getElementsByTagName(“head”)[0].appendChild(hint)
兼容性

這么好用的特性,當(dāng)然要考慮各瀏覽器的兼容程度了(哭:

IE9 支持 DNS pre-fetching 但管它叫 prefetch。

IE10+ 中 dns-prefetch 和 prefetch 是等價(jià)的。

其他方面的測(cè)試,目前還沒有很好的方案,暫且只能通過(guò)查看瀏覽器是否緩存來(lái)測(cè)試。

在 Chrome 中打開了 chrome developer tools 開發(fā)工具會(huì)阻止頁(yè)面的預(yù)渲染,所以我們看不到這個(gè)過(guò)程,但可以在 chrome://cache/ 或 chrome://net-internals/#prerender 中查看。

Firefox 可以在 about:cache 中查看。

警告

這些特定還是實(shí)驗(yàn)性質(zhì)的,將來(lái)可能改變。

權(quán)利越大,責(zé)任越大,不要濫用!

參考鏈接

html5-prefetch

MDN Controlling DNS prefetching

MDN Link prefetching FAQ

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/49526.html

相關(guān)文章

  • 2017-09-11 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選使用實(shí)現(xiàn)和交互的彈幕效果類型檢測(cè)理解的閉包深入理解之代理和反射,和它們?cè)谥械膬?yōu)先級(jí)中文譯區(qū)塊鏈?zhǔn)侨绾喂ぷ鞯挠醚菔局鯇谧g怎樣處理移動(dòng)端對(duì)圖片資源的限制掘金技術(shù)周刊的正則表達(dá)式掘金開發(fā)環(huán)境搭建掘金與復(fù)雜業(yè)務(wù)組件的 2017-09-11 前端日?qǐng)?bào) 精選 使用canvas實(shí)現(xiàn)和HTML5 video交互的彈幕效果【JS】類型檢測(cè)理解 JavaScript 的閉包深入理解ES6...

    antyiwei 評(píng)論0 收藏0
  • 深度解析之異步加載和預(yù)加載

    摘要:當(dāng)然并不是所有的頁(yè)面需要用到的外部域名都需要做這樣的域名解析,瀏覽器默認(rèn)會(huì)解析超鏈接屬性的里面的域名,并且你的網(wǎng)站域名還不能是,如果是,則需要設(shè)置請(qǐng)求頭或加入一段強(qiáng)制開啟域名解析的標(biāo)簽。 廢話:異步加載和預(yù)加載一直都是前端優(yōu)化必備技能之一,今天我們就來(lái)深度解析一下常用的幾個(gè)關(guān)鍵點(diǎn)。 異步加載 廢話不多說(shuō),任何長(zhǎng)篇大論的教程都抵不過(guò)一張清晰明了的高清大圖來(lái)得好: showImg(http...

    qpal 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<