HTML5中使用rel屬性預(yù)加載功能的方法-創(chuàng)新互聯(lián)

小編給大家分享一下HTML5中使用rel屬性預(yù)加載功能的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、蒼梧ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的蒼梧網(wǎng)站制作公司

在HTML5中,有個很有用但常被忽略的特性,就是預(yù)先加載(prefetch),它的原理是:
利用瀏覽器的空閑時間去先下載用戶指定需要的內(nèi)容,然后緩存起來,這樣用戶下次加載時,就直接從緩存中取出來,效率就快了.

舉個例子說明:比如要預(yù)先加載某個頁面,可以這樣:

<link rel="prefetch" href="http://www.example.com/"> <!-- Firefox -->

但如果是google的話,要用另外的一個名稱,即:

<link rel="prerender" href="http://www.example.com/"> <!-- Chrome -->

即使在不支持的瀏覽器,用了這個特性其實(shí)是不會出錯的,只不過瀏覽器解析不到而已, 所以,如果你感覺能有辦法預(yù)先預(yù)測到用戶期望點(diǎn)的頁面(比如用戶看最新的受歡迎的熱圖,他 可能看了第一頁后,會繼續(xù)看下一頁,這個時候就可以用預(yù)先加載這個特性了).比如 :

<link rel="prefetch" href="<?php echo get_next_posts_page_link(); ?>">

而單獨(dú)取一張圖片也是可以的,比如:

<link rel="prefetch" href="/images/test.jpg"/>

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

1.用戶可能是第一次訪問網(wǎng)站,此時還無緩存
2.用戶可能清空了緩存
3.緩存可能已經(jīng)過期,資源將重新加載
4.用戶訪問的緩存文件可能不是最新的,需要重新加載
5.Chrome 的預(yù)加載技術(shù)

現(xiàn)在的 chrome 聰明到根據(jù)你的瀏覽記錄,預(yù)測到你可能訪問或搜索哪些網(wǎng)站,在你打開網(wǎng)站之前就加載好了一些資源了。
舉個栗子,當(dāng)你在搜索框輸入 "amaz" 時,它猜測到你可能要訪問 amazon.com,可能就幫你加載了這個網(wǎng)站的一些資源。
如果這個預(yù)測算法精準(zhǔn)的話,就能大大地提高用戶的瀏覽體驗(yàn)了。

DNS prefetch
我們知道,當(dāng)我們訪問一個網(wǎng)站如 www.amazon.com 時,需要將這個域名先轉(zhuǎn)化為對應(yīng)的 IP 地址,這是一個非常耗時的過程。
DNS prefetch 分析這個頁面需要的資源所在的域名,瀏覽器空閑時提前將這些域名轉(zhuǎn)化為 IP 地址,真正請求資源時就避免了上述這個過程的時間.

<meta http-equiv='x-dns-prefetch-control' content='on'>  
<link rel='dns-prefetch' href='http://g-ecx.images-amazon.com'>  
<link rel='dns-prefetch' href='http://z-ecx.images-amazon.com'>  
<link rel='dns-prefetch' href='http://ecx.images-amazon.com'>  
<link rel='dns-prefetch' href='http://completion.amazon.com'>  
<link rel='dns-prefetch' href='http://fls-na.amazon.com'>

應(yīng)用場景1:我們的資源存在在不同的 CDN 中,那提前聲明好這些資源的域名,就可以節(jié)省請求發(fā)生時產(chǎn)生的域名解析的時間。
應(yīng)用場景2:如果我們知道用戶接下來的操作一定會發(fā)起一起資源的請求,那就可以將這個資源進(jìn)行 DNS-Prefetch,加強(qiáng)用戶體驗(yàn)。

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

<link rel='subresource' href='critical.js'>  
<link rel='subresource' href='main.css'>  
<link rel='prefetch' href='secondary.js'>

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

<meta http-equiv="Link" content="<critical.js>; rel=prefetch">

rel='subresource' 表示當(dāng)前頁面必須加載的資源,應(yīng)該放到頁面最頂端先加載,有最高的優(yōu)先級。
rel='prefetch' 表示當(dāng) subresource 所有資源都加載完后,開始預(yù)加載這里指定的資源,有最低的優(yōu)先級。
注意:只有可緩存的資源才進(jìn)行預(yù)加載,否則浪費(fèi)資源!

Pre render
前面說到的預(yù)解析DNS、預(yù)加載資源已經(jīng)夠強(qiáng)悍了有木有,可還有更厲害的預(yù)渲染(Pre-rendering)!
預(yù)渲染意味著我們提前加載好用戶即將訪問的下一個頁面,否則進(jìn)行預(yù)渲染這個頁面將浪費(fèi)資源,慎用!

<link rel='prerender' href='http://www.pagetoprerender.com'>

rel='prerender' 表示瀏覽器會幫我們渲染但隱藏指定的頁面,一旦我們訪問這個頁面,則秒開了!
在 Firefox 中或用 rel='next' 來聲明

<link rel="next" href="http://www.pagetoprerender.com">

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

當(dāng)資源為以下列表中的資源時,將阻止預(yù)渲染操作:
1.URL 中包含下載資源
2.頁面中包含音頻、視頻
3.POST、PUT 和 DELETE 操作的 ajax 請求
4.HTTP 認(rèn)證(Authentication)
5.HTTPS 頁面
6.含惡意軟件的頁面
7.彈窗頁面
8.占用資源很多的頁面
9.打開了 chrome developer tools 開發(fā)工具

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

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

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

看完了這篇文章,相信你對HTML5中使用rel屬性預(yù)加載功能的方法有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前標(biāo)題:HTML5中使用rel屬性預(yù)加載功能的方法-創(chuàng)新互聯(lián)
文章鏈接:http://bm7419.com/article42/dicohc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、微信公眾號、外貿(mào)建站、品牌網(wǎng)站設(shè)計(jì)、全網(wǎng)營銷推廣、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司