Link prefetching原理及效能測試,linkprefetching
背景: Link Prefetching 是 HTML 5的一個標準, 最早是由Mozilla 發布的一個互連網標準草案,link prefetching 現在是 W3C和WHATWG關於HTML 5中的一部分。網頁可以嵌入 prefetching 標記,當瀏覽器載入完當前頁面即結束載入網頁,在瀏覽器閑置的時候會觸發prefetching 標記的link,瀏覽器會在後台靜默prefeching指定的documents, 並儲存在cache中。 當使用者訪問到prefetched documents時, cache中的內容會迅速被使用,加速網頁展現。觸發Prefetch 文法:
<link rel="prefetch" href="http://www.cmcm.com"> prefetch cmcm </link>
HTTP link 文法:
Link: </images/big.jpeg>; rel=prefetch
HTML meta tag: 具體格式制定在 RFC 5988 Section 5
<meta http-equiv="Link" content="</images/big.jpeg>; rel=prefetch">
瀏覽器如何Prefetching & Web Developer Prefetching時機: 前面提到過瀏覽器會在閑置的時機進行prefetching,Firefox在Mosilla1.2中使用nsIWebProgressListener API,我們可以註冊頂層的nsIWebProgress 對象,通過這個我們可以接收到document start & stop 通知,我們可以取上次stop的document和下次document start 的近視閑置值作為一段時間間隔. 當onLoad 觸發處理頂層document 時基本會觸發上一次document stop通知, 這是我們開始prefetch 請求時機。 如果一個subframe 包含prefetching 標記,瀏覽器prefetching 不會立即開始而是直到top-most frame 及其所有的子frame 完成載入才會被觸發。 prefetching 是否適合你的網站取決於yourself.下面有幾個建議:(1).當一些列的頁面只是slideshow,載入前後1-3個頁面(前提是這些頁面並不是大頁面)(2).在整個網站至始至終預先載入大多數圖片(3).prefetching 你網站的搜尋結果頁
下面我們一起來看一下我們困惑的情境:1.當使用者點擊一個正在Prefetching的link 瀏覽器是如何做處理的? 當使用者點擊或者初始化頁面載入, link prefetching 會停止並且所有的prefetch的操作會被丟棄。如果已經prefetch document 是下載的一部分,那這部分document會被儲存在cache中提供給伺服器發送一個“Accept-Ranges:bytes"請 求前序使用。這個請求前序會被webservers在觸發靜態內容產生。當使用者即時訪問一個已經prefetched document,保 留部分 document 會被使用 HTTP byte-range 請求提取。2.當使用者在後台下載時,link prefetching 會搶頻寬嗎? yes and no. 如果你使用Mozilla瀏覽器下載, link prefetching 會被delayed直到後台所有下載完成。舉例來說:你打 開幾個tab載入網頁包含prefetching標記,Mozilla會等待所有tab的頁面載入完成後才會記性prefetch 請求。當你使用其 他 應用程式使用頻寬,那麼 prefetch會和其他應用程式競爭。這是個問題瀏覽器會有待改進,這裡我們自己瀏覽器也 會進 行相應改進,比如在網路閑置情況下才進行prefetch。
使用prefetch的限制與開關:1. 只有http,https才能使用prefetch, ftp協議不支援prefetch。2. 只有html的 link標籤支援 prefetch , <a></a> 等其他標籤不支援。3. 你可以通過js代碼關閉prefetch
user_pref("network.prefetch", false);
但是有個問題是目前雖然提供這個選項,但是大多數瀏覽器對這個選項支援是有問題的,換句話說即使開啟這個選項,也有可能prefetching。4.測試你的瀏覽器是否支援prefetching Test Prefetching
Link Prefetching 效能測試測試環境:小米2:CM BrowserAndroid 4.1.1系統
site/page load time |
enable Prefetching |
none prefetching |
improve(%) |
www.cmcm.com |
6367 |
9470 |
35% |
www.taobao.com |
871 |
1112 |
13% |
08-03 17:18:41.299: E/Timer(20970): pageStarted http://www.cmcm.com/08-03 17:18:41.399: E/Timer(20970): pageFinished http://www.cmcm.com/08-03 17:18:41.419: E/Timer(20970): pageStarted http://www.cmcm.com/en-us/08-03 17:18:47.675: E/Timer(20970): pageFinished http://www.cmcm.com/en-us/636708-03 17:20:07.631: E/Timer(21417): pageStarted http://www.cmcm.com/08-03 17:20:08.862: E/Timer(21417): pageFinished http://www.cmcm.com/08-03 17:20:08.882: E/Timer(21417): pageStarted http://www.cmcm.com/en-us/08-03 17:20:17.371: E/Timer(21417): pageFinished http://www.cmcm.com/en-us/9740-----------------------------------------------------------------------------------------------08-03 20:57:55.765: E/Timer(26875): pageStarted http://www.taobao.com/08-03 20:57:55.805: E/Timer(26875): pageStarted http://m.taobao.com/?sprefer=sypc0008-03 20:57:56.877: E/Timer(26875): pageFinished http://m.taobao.com/?sprefer=sypc00111208-03 21:00:45.817: E/Timer(27666): pageStarted http://www.taobao.com/08-03 21:00:45.867: E/Timer(27666): pageStarted http://m.taobao.com/?sprefer=sypc0008-03 21:00:46.688: E/Timer(27666): pageFinished http://m.taobao.com/?sprefer=sypc00871
通過我們自己的瀏覽器測試開啟prefetching可以提高顯著提高頁面的載入速度。
轉載請說明出處, 謝謝! 歡迎共同探討.
http://blog.csdn.net/typename/article/details/38358765 powered by miechal zhao.
性可以測試知多少---性可以測試載入器原理與架構
但是,效能測試不是loadrunner,所有的作者也是這麼認為的。但他們在講效能測試的時候講的就是loadrunner有,只是講的多少不同罷啦。 你是否覺得我對loadrunner有仇?我之所以將其分開來學,只是希望自己在學習效能測試的時候不要被loadrunner局限了而已。只是覺得在做效能測試時不要帶loadrunner的思維,這樣更容易把握效能測試的本質。----------------------------------------------------- 效能測試工具,從廣義上講,在效能測試過程中使用到的所有工具都可以稱其為效能測試工具。從狹義上來講,我們可以把效能測試工具分為伺服器端效能測試工具與前段效能測試工具。 伺服器端效能測試工具也我們測試人員通常所認為的效能測試工具。LoadRunner、JMeter、SilkPerformance、伺服器端壓力效能工具需要支援產生壓力和負載,錄製和產生指令碼,設定和部署情境,產生並發使用者和向系統施加持續的壓力。 前端效能測試工具應用比較廣泛,開發人員,前端開發人員、測試人員都會經常用到。Firebug 、fildder2、Yslow 、前端效能測試工具只需要關於心瀏覽器等用戶端工具對具體需要展現的頁面的處理過程。 伺服器效能測試工具原理 效能測試工具的主要作用是通過類比生產環境中的真實業務操作,對被測試系統實行壓力負載測試,監視被 測試系統在不同業務、不同壓力效能下的效能表現,找出潛在的效能瓶頸進行分析、最佳化。 用戶端與伺服器相當於兩個人,通過資訊來進行交流。由於初次見面不好意思直接交流,與是找來了中間傳話人,用戶端把資訊告訴給傳話人,由傳話人來轉達給伺服器。那麼伺服器反饋的資訊也由傳話人轉達給用戶端。一般效能測試工具都需要錄製或編寫用戶端行為指令碼。 這樣傳達人就有了用戶端的行為能力,從而假扮用戶端來欺騙伺服器,與之進行通訊。有了用戶端行為了傳達人可以進行自我複製。從而變出N多個傳達人對伺服器進通訊。---這個傳達人的行為和能力也就是效能測試工具的基本特質。(突然覺得效能工具像第三者插足,而且是可以自我複製瘋狂變態的第三者,哈哈!) 對於目前流行的效能測試工具,他們的基本工作原理都是一致的。在用戶端通過多線程或多進程類比虛擬使用者訪問,對伺服器端施加壓力,然後在過程中監控和收集效能資料。效能測試工具應該具備什麼的特質呢?1、工具本身佔用系統資源少,可擴充性好,可用性強。 2、能類比真實業務事務操作,在並發時能真正產生業務壓力。(這一點是核心)3、對壓力測試結果能很好地進行效能分析,快速找出被測試系統的瓶頸。4、測試指令碼的重複性強。 伺服器效能測試工具的架構 使用者行為產生部分 我為什麼說的這麼朦朧,對於熟悉loadrunner的朋友,我說成虛擬使用者指令碼產生器,你更容易理解,這個指令碼,我們可以錄製,也可以手工編寫。你不要以為這是產生使用者行為的唯一方式。因為在JMeter成中是添加各種組件,通過對組件的配置來完成使用者行為的,當然也可以通過錄製。而在相對簡陋的效能測試工具curl_loader(linux環境下的啟動並執行),他是通過編寫設定檔的形式來描述使用者形為的。 我前面也有提了,雖然效能測試工具由不同的形式來描述,但他們的原理是一樣的,都是通過Proxy方式來實現,具體來說,Proxy作為用戶端和伺服器之間的中間人,接收用戶端的資料包。 壓力產生器 壓力產生器用於根據指令碼內容產生實際的負載,在效能測試工具中,壓力產生器扮演著“產生負載”的角色。也就根使用者的設定,進行自我複製來產生多個用戶端向伺服器......餘下全文>>
電子行業六合一安全性可以綜合測試儀的原理
這種儀器是把安規參數集中到一起進行測試,但是介面很多是分開的,沒有辦法做到一起,也是需要分開接線,耐壓與絕緣,泄漏與啟動是可以做到一起測試的,接地是要分開的,所以像這樣的儀器是適合在品質部門或者實驗室進行測試,在生產線上不合適,反而麻煩。。。。