国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > HTML > 正文

詳解HTML5中rel屬性的prefetch預(yù)加載功能使用

2020-03-24 18:58:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在HTML5中,有個(gè)很有用但常被忽略的特性,就是預(yù)先加載(prefetch),它的原理是:
利用瀏覽器的空閑時(shí)間去先下載用戶指定需要的內(nèi)容,然后緩存起來(lái),這樣用戶下次加載時(shí),就直接從緩存中取出來(lái),效率就快了. 舉個(gè)例子說(shuō)明:比如要預(yù)先加載某個(gè)頁(yè)面,可以這樣:
XML/HTML Code復(fù)制內(nèi)容到剪貼板
linkrel= prefetch href= http://www.example.com/ !--Firefox--
linkrel= prerender href= http://www.example.com/ !--Chrome--
即使在不支持的瀏覽器,用了這個(gè)特性其實(shí)是不會(huì)出錯(cuò)的,只不過(guò)瀏覽器解析不到而已,
所以,如果你感覺(jué)能有辦法預(yù)先預(yù)測(cè)到用戶期望點(diǎn)的頁(yè)面(比如用戶看最新的受歡迎的熱圖,他 可能看了第一頁(yè)后,會(huì)繼續(xù)看下一頁(yè),這個(gè)時(shí)候就可以用預(yù)先加載這個(gè)特性了).比如
XML/HTML Code復(fù)制內(nèi)容到剪貼板
linkrel= prefetch href= ?phpechoget_next_posts_page_link();?
有了瀏覽器緩存,為何還需要預(yù)加載?
1.用戶可能是第一次訪問(wèn)網(wǎng)站,此時(shí)還無(wú)緩存
2.用戶可能清空了緩存
3.緩存可能已經(jīng)過(guò)期,資源將重新加載
4.用戶訪問(wèn)的緩存文件可能不是最新的,需要重新加載
5.Chrome 的預(yù)加載技術(shù)
現(xiàn)在的 chrome 聰明到根據(jù)你的瀏覽記錄,預(yù)測(cè)到你可能訪問(wèn)或搜索哪些網(wǎng)站,在你打開(kāi)網(wǎng)站之前就加載好了一些資源了。
舉個(gè)栗子,當(dāng)你在搜索框輸入 amaz 時(shí),它猜測(cè)到你可能要訪問(wèn) amazon.com,可能就幫你加載了這個(gè)網(wǎng)站的一些資源。
如果這個(gè)預(yù)測(cè)算法精準(zhǔn)的話,就能大大地提高用戶的瀏覽體驗(yàn)了。DNS prefetch
我們知道,當(dāng)我們?cè)L問(wèn)一個(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í)間。
XML/HTML Code復(fù)制內(nèi)容到剪貼板
metahttp-equiv='x-dns-prefetch-control'content='on' linkrel='dns-prefetch' linkrel='dns-prefetch' linkrel='dns-prefetch' linkrel='dns-prefetch' linkrel='dns-prefetch'
應(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ù)加載:
XML/HTML Code復(fù)制內(nèi)容到剪貼板
linkrel='subresource'href='critical.js' linkrel='subresource'href='main.css' linkrel='prefetch'href='secondary.js'
rel='subresource' 表示當(dāng)前頁(yè)面必須加載的資源,應(yīng)該放到頁(yè)面最頂端先加載,有最高的優(yōu)先級(jí)。
rel='prefetch' 表示當(dāng) subresource 所有資源都加載完后,開(kāi)始預(yù)加載這里指定的資源,有最低的優(yōu)先級(jí)。
注意:只有可緩存的資源才進(jìn)行預(yù)加載,否則浪費(fèi)資源!Pre render
前面說(shuō)到的預(yù)解析DNS、預(yù)加載資源已經(jīng)夠強(qiáng)悍了有木有,可還有更厲害的預(yù)渲染(Pre-rendering)!
預(yù)渲染意味著我們提前加載好用戶即將訪問(wèn)的下一個(gè)頁(yè)面,否則進(jìn)行預(yù)渲染這個(gè)頁(yè)面將浪費(fèi)資源,慎用!
XML/HTML Code復(fù)制內(nèi)容到剪貼板
rel='prerender' 表示瀏覽器會(huì)幫我們渲染但隱藏指定的頁(yè)面,一旦我們?cè)L問(wèn)這個(gè)頁(yè)面,則秒開(kāi)了!
在 Firefox 中或用 rel='next' 來(lái)聲明
XML/HTML Code復(fù)制內(nèi)容到剪貼板
不是所有的資源都可以預(yù)加載
當(dāng)資源為以下列表中的資源時(shí),將阻止預(yù)渲染操作:
1.URL 中包含下載資源
2.頁(yè)面中包含音頻、視頻
3.POST、PUT 和 DELETE 操作的 ajax 請(qǐng)求
4.HTTP 認(rèn)證(Authentication)
5.HTTPS 頁(yè)面
6.含惡意軟件的頁(yè)面
7.彈窗頁(yè)面
8.占用資源很多的頁(yè)面
9.打開(kāi)了 chrome developer tools 開(kāi)發(fā)工具手動(dòng)觸發(fā)預(yù)渲染操作
在 head 中強(qiáng)勢(shì)插入 link[rel='prerender'] 即可:
JavaScript Code復(fù)制內(nèi)容到剪貼板
varhint=document.createElement( link ) hint.setAttribute( rel , prerender ) hint.setAttribute( href , next-page.html ) document.getElementsByTagName( head )[0].appendChild(hint)html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 游戏| 阜康市| 兰西县| 商南县| 北安市| 汶上县| 共和县| 鄂州市| 五大连池市| 改则县| 雷波县| 上杭县| 罗田县| 兰溪市| 巍山| 永宁县| 马公市| 垫江县| 吉水县| 平凉市| 利川市| 石河子市| 夹江县| 宣汉县| 万全县| 彰武县| 克东县| 丰县| 临沂市| 阿拉善盟| 霸州市| 小金县| 乐平市| 澳门| 称多县| 焉耆| 都匀市| 准格尔旗| 上杭县| 武城县| 岳普湖县|