我曾經(jīng)介紹過本站上使用的一些速度優(yōu)化技術(shù)。而在HTML5里,出現(xiàn)了一個(gè)新的用來優(yōu)化網(wǎng)站速度的新功能:頁(yè)面資源預(yù)加載/預(yù)讀取(Link prefetch)。
頁(yè)面資源預(yù)加載/預(yù)讀取(Link prefetch)是什么?來自MDN的解釋:
頁(yè)面資源預(yù)加載(Link prefetch)是瀏覽器提供的一個(gè)技巧,目的是讓瀏覽器在空閑時(shí)間下載或預(yù)讀取一些文檔資源,用戶在將來將會(huì)訪問這些資源。一個(gè)Web頁(yè)面可以對(duì)瀏覽器設(shè)置一系列的預(yù)加載指示,當(dāng)瀏覽器加載完當(dāng)前頁(yè)面后,它會(huì)在后臺(tái)靜悄悄的加載指定的文檔,并把它們存儲(chǔ)在緩存里。當(dāng)用戶訪問到這些預(yù)加載的文檔后,瀏覽器能快速的從緩存里提取給用戶。
簡(jiǎn)單說來就是:讓瀏覽器預(yù)先加載用戶訪問當(dāng)前頁(yè)后極有可能訪問的其他資源(頁(yè)面,圖片,視頻等)。而且方法超級(jí)的簡(jiǎn)單!
HTML5頁(yè)面資源預(yù)加載(Link prefetch)寫法
<!-- 預(yù)加載整個(gè)頁(yè)面 -->
<link rel="prefetch" /></p>
<p><!-- 預(yù)加載一個(gè)圖片 -->
<link rel="prefetch" href=" <a >https://www.jb51.net/wordpress/</a>
wp-content/uploads/2014/04/b-334x193.jpg " />
HTML5頁(yè)面資源預(yù)加載/預(yù)讀取(Link prefetch)功能是通過Link標(biāo)記實(shí)現(xiàn)的,將rel屬性指定為“prefetch”,在href屬性里指定要加載資源的地址?;鸷鼮g覽器里還提供了一種額外的屬性支持:
<link rel="prefetch alternate stylesheet"
title="Designed for Mozilla" href="mozspecific.css" _fcksavedurl=""mozspecific.css"" />
<link rel="next" href="2.html" />
HTTPS協(xié)議資源下也可以使用prefetch。
什么情況下應(yīng)該預(yù)加載頁(yè)面資源
在你的頁(yè)面里加載什么樣的資源,什么時(shí)候加載,這完全取決于你。下面是一些建議:
1.當(dāng)頁(yè)面有幻燈片類似的服務(wù)時(shí),預(yù)加載/預(yù)讀取接下來的1-3頁(yè)和之前的1-3頁(yè)。
2.預(yù)加載那些整個(gè)網(wǎng)站通用的圖片。
3.預(yù)加載網(wǎng)站上搜索結(jié)果的下一頁(yè)。
禁止頁(yè)面資源預(yù)加載(Link prefetch)
火狐瀏覽器里有一個(gè)選項(xiàng)可以禁止任何的頁(yè)面資源預(yù)加載(Link prefetch)功能,你可以這樣設(shè)置:
1.user_pref("network.prefetch-next", false);
2.頁(yè)面資源預(yù)加載(Link prefetch)注意事項(xiàng)
下面是一些關(guān)于頁(yè)面資源預(yù)加載(Link prefetch)的注意事項(xiàng):
1.預(yù)加載(Link prefetch)不能跨域工作,包括跨域拉取cookies。
2.預(yù)加載(Link prefetch)會(huì)污染你的網(wǎng)站訪問量統(tǒng)計(jì),因?yàn)橛行╊A(yù)加載到瀏覽器的頁(yè)面用戶可能并未真正訪問。
3.火狐瀏覽器從2003年開始就已經(jīng)提供了對(duì)這項(xiàng)預(yù)加載(Link prefetch)技術(shù)的支持。
利用瀏覽器空閑時(shí)間加載一些額外的資源文件,看起來是既刺激又危險(xiǎn),你想試試這些技術(shù)嗎?