一、web性能監控背景描述php
上期分享的《Web性能監控自動化探索之路–初識WebPageTest》從依賴webpagetest的角度給出了作性能平常檢查的方案,但因爲依賴結構相對複雜咱們須要給出更簡單的解決方案。,測試同窗沒有快速投入的主要緣由也是語言和維護成本相對比較大。但解決方案是多種多樣的:)。那麼咱們再看下這個需求的本質:針對內外網環境須要按期對站點進行yslow和page speed檢查,以保證在持續開發過程當中保證質量。web
對比webpagetest,咱們再反思下手裏的資源和特色:數據庫
一、對於固定的HTML結構,咱們不須要多瀏覽器支持亦能夠獲得yslow和page speed等結論瀏覽器
二、webkit是開源的:)網絡
三、pagespeed和yslow都是有開源sdk的。數據結構
那麼咱們的工做就變得很簡單了,打包webkit實現一個不須要展現界面的程序(固然須要界面信息能夠隨時從UI線程裏讀取)生成須要的數據文件,並生成報表便可。流程簡化以下:wordpress
一、經過QT或者phantomJS等webkit打包工具獲取HTTP請求數據流HAR文件(這裏採用phantomJS)工具
二、經過HAR文件來生成請求瀑布圖、yslow報告和page speed報告()性能
三、經過保存HAR文件來生成站點的趨勢測試
四、經過修改hosts文件來控制內網測試環境
二、PhantomJS介紹
PhantomJS(http://phantomjs.org/)是支持JavaScript API的無界面、運行在服務端的webkit環境。它經過JavaScript和CoffeeScript控制webkit的各個模塊,好比CSS Selector,JSON,Canvas、SVG和HTTP網絡等等。它很是適合:
一、用來作服務端的網站測試,包括Qunit,Jasmin等等。
二、屏幕截圖抓取
三、網頁DOM操做
四、網絡狀況監控
它提供了不少的examples,其中netsniff.js就是用於監控網絡請求並生成HAR文件的。
三、HAR文件(HTTP Archive Specification)
HAR(HTTP Archive Specification),是一個用來儲存HTTP請求/響應信息的通用文件格式,基於JSON。這個格式的出現可使HTTP監測工具以一種通用的格式導出所收集的數據,這些數據能夠被其餘支持HAR的HTTP分析工具(包括Firebug,httpwatch,Fiddler等)所使用,來分析網站的性能瓶頸。目前HAR規範最新版本爲HAR 1.2。HAR文件必須是UTF-8編碼,有無BOM無所謂。
HAR數據結構:
一個HAR文件就是一個JSON對象,以下:
{「log」: {
「version」 : 「1.2″,
「creator」 : {},
「browser」 : {},
「pages」: [],
「entries」: [],
「comment」: 「」
}
}
注:每一個頁面對應一個<page>對象,每一個HTTP請求對應一個<entry>對象。若是HTTP的監測分析工具不能把請求按照page分組,那麼<pages>爲空。
四、Page Speed SDK和YSLOW
首先咱們如今google的Page Speed站點上下載安裝SDK。http://code.google.com/p/page-speed/wiki/DownloadPageSpeed?tm=2。
而後把經過phontomJS獲取的har文件進行解析。
這邊已經能夠經過命令行獲取到具體的分數和建議。
同理咱們也能夠獲取yslow的分數。
五、HAR Viewer
HAR Viewer(http://www.softwareishard.com/har/viewer/)是基於Javascript的一個很強大的HAR分析工具,它能夠將HAR文件以瀑布流和餅圖等形式進行展現。源代碼在這裏:http://code.google.com/p/harviewer/。
這些圖片結合HAR的產生和pagespeed的評分建議是否是很酷!
六、後續的事兒
把站點的HAR文件用數據庫的形式存儲,創建趨勢對比的文檔。把自助工具創建成站點。
參考URL:
一、http://phontomjs.org
二、http://httparchive.org/about.php#harfile
三、http://weizhifeng.wordpress.com/2011/03/26/http-archive-specification-chinese/
四、http://www.igvita.com/2012/08/28/web-performance-power-tool-http-archive-har/
五、http://code.google.com/p/page-speed/wiki/DownloadPageSpeed?tm=2
六、http://groups.google.com/group/http-archive-specification