首頁 web前端 H5教程 HTML5中如何使用rel屬性的預先載入功能?

HTML5中如何使用rel屬性的預先載入功能?

Sep 10, 2018 pm 06:05 PM
html5

本章帶給大家HTML5中如何使用rel屬性的預先載入功能?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

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

舉個例子說明:比如要預先載入某個頁面,可以這樣: 

<link rel="prefetch" href="http://www.example.com/"> <!-- Firefox -->
登入後複製

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

<link rel="prerender" href="http://www.example.com/"> <!-- Chrome -->
登入後複製

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

<link rel="prefetch" href="<?php echo get_next_posts_page_link(); ?>">
登入後複製

而單獨取一張圖片也是可以的,例如: 

<link rel="prefetch" href="/images/test.jpg"/>
登入後複製

有了瀏覽器緩存,為何還需要預先載入?

1.用戶可能是第一次造訪網站,此時還無快取
2.用戶可能清空了快取
3.快取可能已經過期,資源將重新載入
4.使用者存取的快取檔案可能不是最新的,需要重新載入
5.Chrome 的預先載入技術

現在的chrome 聰明到根據你的瀏覽記錄,預測到你可能會造訪或搜尋哪些網站,在你打開網站之前就已經加載了一些資源了。
舉個栗子,當你在搜尋框輸入 "amaz" 時,它猜測到你可能要訪問 amazon.com,可能就幫你加載了這個網站的一些資源。
如果這個預測演算法精準的話,就能大幅提升使用者的瀏覽體驗了。

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

<meta http-equiv=&#39;x-dns-prefetch-control&#39; content=&#39;on&#39;>  
<link rel=&#39;dns-prefetch&#39; href=&#39;http://g-ecx.images-amazon.com&#39;>  
<link rel=&#39;dns-prefetch&#39; href=&#39;http://z-ecx.images-amazon.com&#39;>  
<link rel=&#39;dns-prefetch&#39; href=&#39;http://ecx.images-amazon.com&#39;>  
<link rel=&#39;dns-prefetch&#39; href=&#39;http://completion.amazon.com&#39;>  
<link rel=&#39;dns-prefetch&#39; href=&#39;http://fls-na.amazon.com&#39;>
登入後複製

應用場景1:我們的資源存在在不同的CDN 中,那麼提前聲明好這些資源的域名,就可以節省請求發生時產生的域名解析的時間。
應用程式場景2:如果我們知道使用者接下來的操作一定會發起一起資源的請求,那就可以將這個資源進行 DNS-Prefetch,加強使用者體驗。

Resource prefetch
在Chrome 下,我們可以用link標籤聲明特定檔案的預先載入:

<link rel=&#39;subresource&#39; href=&#39;critical.js&#39;>  
<link rel=&#39;subresource&#39; href=&#39;main.css&#39;>  
<link rel=&#39;prefetch&#39; href=&#39;secondary.js&#39;>
登入後複製

在Firefox 中或用meta 標籤宣告:

<meta http-equiv="Link" content="<critical.js>; rel=prefetch">
登入後複製

rel='subresource' 表示目前頁面必須載入的資源,應該放到頁面最頂端先加載,有最高的優先權。
rel='prefetch' 表示當 subresource 所有資源都載入完後,開始預先載入這裡指定的資源,有最低的優先權。
注意:只有可快取的資源才進行預加載,否則浪費資源!

Pre render
前面說到的預解析DNS、預載資源已經夠強悍了有木有,可還有更厲害的預渲染(Pre-rendering)!
預先渲染意味著我們事先載入好使用者即將造訪的下一個頁面,否則進行預渲染這個頁面將浪費資源,慎用!

<link rel=&#39;prerender&#39; href=&#39;http://www.pagetoprerender.com&#39;>
登入後複製

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

<link rel="next" href="http://www.pagetoprerender.com">
登入後複製

#不是所有的資源都可以預先載入

當資源為以下清單中的資源時,將阻止預先渲染操作:
1.URL 中包含下載資源
2.頁面中包含音訊、視訊
3.POST、PUT 和DELETE 操作的ajax 請求
4.HTTP 認證(Authentication)
5.HTTPS 頁面
6.含惡意軟體的頁面
7.彈出視窗頁面
8.佔用資源很多的頁面
9.打開了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)
登入後複製




#

以上是HTML5中如何使用rel屬性的預先載入功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

See all articles