肖建芳
(汕頭職業(yè)技術學院計算機系,汕頭515041)
互聯(lián)網(wǎng)+時代,各行各業(yè)都擁抱互聯(lián)網(wǎng),特別是在移動端快速發(fā)展的時代,網(wǎng)頁不僅是呈現(xiàn)在用戶的PC瀏覽器里,更多的時候,用戶是通過移動產(chǎn)品瀏覽我們的網(wǎng)頁。加之有越來越多的開發(fā)者投入到Web App 和Hybrid App 的開發(fā)隊伍中,性能這一問題又再一次成為程序員們重點關注的問題。在用戶就是上帝、速度為王的時代,用戶的選擇直接決定企業(yè)的生存。尤其是智能手機當?shù)赖慕裉欤灼溜@示時間決定了用戶是否會繼續(xù)選擇你的網(wǎng)站和服務。因此,在網(wǎng)站生命周期過程中,不斷對網(wǎng)站性能進行優(yōu)化非常必要。
S 養(yǎng)生館連鎖店網(wǎng)站前端的主要作用是展示連鎖店的企業(yè)文化、產(chǎn)品和服務,查看各地連鎖店分布,以及提供更好的客戶服務,同時用戶也可以直接在網(wǎng)站上訂購部分產(chǎn)品和服務,前端設計在該網(wǎng)站中占據(jù)著非常重要的地位。
瀏覽器的主要作用是將用戶輸入的網(wǎng)站“URL”轉變成可視化的圖像。這其中包含兩個過程,一是網(wǎng)頁加載過程,從“URL”到構建DOM(Document Object Model,文檔對象模型)樹;二是網(wǎng)頁渲染過程,從DOM樹到生成可視化圖像,即我們看到的頁面效果。網(wǎng)頁渲染的過程其實就是將URL 對應的各種資源,通過瀏覽器渲染引擎的解析,輸出可視化的圖像。根據(jù)數(shù)據(jù)的流向,瀏覽器的渲染過程可以分成三個階段(以WebKit 內(nèi)核瀏覽器為例):從網(wǎng)頁的URL 到構建完DOM 樹;從DOM 樹到構建完WebKit 的繪圖上下文;從繪圖上下文到生成最終圖像。
瀏覽器渲染引擎主要包括HTML 解釋器、CSS 解釋器、布局和JavaScript(以下簡稱JS)解釋器。其中,HTML 解釋器主要作用是將HTML 文本解釋成DOM樹;CSS 解釋器作用是為DOM 中各元素對象計算出樣式信息;布局則是指在DOM 樹創(chuàng)建之后形成一個內(nèi)部表示模型,這個模型將HTML 元素與CSS 樣式結合起來,計算出元素的具體大小和位置等布局信息;JS 解釋器能夠解釋JS 代碼并通過DOM 接口和CSSOM 接口來修改網(wǎng)頁內(nèi)容和樣式信息,從而改變渲染的結果。隨著JS 解釋器越來越重要,JS 解釋器逐漸脫離出來成為獨立的JS 引擎。
根據(jù)瀏覽器渲染過程,構建Web 前端頁面響應時間模型如下:
其中T 表示W(wǎng)eb 前端頁面響應時間,Tweb表示網(wǎng)絡傳輸時間,TDOM表示構建DOM 樹所需的時間,Tc表示從DOM 樹到構建完WebKit 的繪圖上下文時間,Tp表示從繪圖上下文到生成最終圖像的時間。
由公式可知,Tweb為網(wǎng)絡傳輸時間,這個主要由網(wǎng)絡帶寬、數(shù)據(jù)傳輸量、用戶及網(wǎng)站服務器所使用網(wǎng)絡的軟硬件環(huán)境決定,開發(fā)者無法改變。因此要縮短Web前端頁面響應時間,進行前端頁面渲染優(yōu)化,開發(fā)者只能針對TDOM、Tc和Tp三個時間進行性能優(yōu)化。
以S 養(yǎng)生館連鎖店網(wǎng)站為例,顧客就是上帝,網(wǎng)頁打開的速度直接影響到顧客的網(wǎng)絡體驗,Web 開發(fā)必須從用戶使用的角度出發(fā)。為了給用戶更好的體驗,通過對Web 前端頁面響應時間模型進行分析,明確了在網(wǎng)頁前端方面通過縮短TDOM、Tc和Tp三個時間可以優(yōu)化網(wǎng)頁加快網(wǎng)頁的打開速度,確定從HTML 代碼、CSS 樣式、JavaScript 腳本和框架應用4 個方面給出優(yōu)化策略。
首先,能使用靜態(tài)頁面的堅決不用動態(tài)頁面。例如S 養(yǎng)生館連鎖店網(wǎng)站部分頁面就具備內(nèi)容較多、有較多數(shù)據(jù)庫訪問、會被頻繁訪問但較少更新的特點,將其中包括首頁在內(nèi)的部分頁面設計成靜態(tài)網(wǎng)頁,然后定期更新,這可以減少每次訪問時瀏覽器渲染的時間。
其次,設計時盡量使用HTML5 新增的語義化標簽,例如
再次,在網(wǎng)站建設過程中不斷進行測試分析,精簡網(wǎng)頁內(nèi)容,刪除無用的頁面內(nèi)容。在不影響網(wǎng)頁效果的前提下,優(yōu)化HTML 代碼和結構,避免嵌套太多層以減少DOM 樹深度。同時在網(wǎng)站上線前刪除代碼中無用的空格、制表符和換行符等。
第四,S 養(yǎng)生館連鎖店網(wǎng)站為了更吸引客戶,前端頁面以圖文為主,使用了大量精美圖片,所以對圖片優(yōu)化非常重要,主要使用了以下策略:部分使用字體圖標替換普通圖片,字體圖標是矢量圖,縮放不會失真且體積非常?。贿x擇合適的圖片壓縮格式,本網(wǎng)站將部分JPEG 壓縮格式圖片替換為相應的WebP 壓縮格式圖片,發(fā)現(xiàn)圖片的體積縮小到原來的三分之二左右,且圖片質(zhì)量更好,也節(jié)省了大量的服務器帶寬資源和數(shù)據(jù)空間;本網(wǎng)站使用的圖片素材都是先使用圖片編輯工具盡量將其處理成所需要的大小和樣式再使用,減少了瀏覽器的渲染時間;按需要分重點設置響應式圖片效果。
最后,優(yōu)化超級鏈接,借助工具查找出網(wǎng)站中失效的和錯誤的鏈接然后妥善處理,確保每個鏈接的準確指向。減少使用重定向鏈接,利用DNS 預取機制,指定需要預取的URL。
使用CSS 樣式能實現(xiàn)網(wǎng)頁內(nèi)容和格式的分離,其有三種用法:樣式屬性(通過設置標簽的style 屬性實現(xiàn))、內(nèi)部樣式(通過Web 文檔
標簽范圍內(nèi)使用一對