而這些信息的傳播都需要通過移動網頁來實現,所以我們壹起來了解壹下移動網頁的優化方法。
WEB服務器優化主要是基於後端服務提供的HTTP接口服務,使用nodejs實現前端分離。這裏的服務器優化主要是指nodejs中實現的WEB服務器的優化。
優化的目的是提高服務器的響應和並發性,充分發揮nodejs的異步和無阻塞特性,主要從以下幾個方面進行。
接口服務調用的優化對於壹個頁面上顯示的路由,要處理這個路由,可能需要調用多個接口並處理接口邏輯。
接口合並我們在調用頁面的時候合並可以合並的接口,以減少接口調用的次數。比如以產品詳情頁為例,產品的壹些特性可以在壹個界面中返回,盡量減少界面調用的次數,因為每個界面處理都有網絡IO、對象序列化、壓縮解壓縮的過程。
接口是異步調用的,但並不是所有的接口都可以合並。對於不能合並的接口,我們盡量利用node的異步無阻塞特性進行異步調用,同時調用多個接口,調用時間取決於較慢的接口。
這裏要明確壹點:對於接口依賴,比如接口A依賴接口B的返回結果,在這種情況下,我們最好梳理壹下接口設計,減少這樣的串行調用,因為這樣壹來,調用耗時就是多個接口耗時的總和。
減少接口交互數據返回的數據數量會導致JSON序列化、數據批量對象處理和額外的性能損失。
您可以簡化接口返回的數據結構,返回必要的字段(頁面將顯示使用的數據)並調整返回項目的數量。
以便減少返回的消息數據體的大小。
另外,請求接口時需要gzip壓縮,可以大大減少網絡傳輸時間。雖然解壓會消耗壹些CPU時間,但是對接網絡IO的損失還是值得的。
業務處理的優化現在我們主要的服務器端業務處理主要是處理頁面邏輯,比如路由控制、會話處理、視圖對象處理、模板渲染等。
我們在這些流程中做了壹些優化。
模板渲染的優化在實際使用中,我們發現模板的渲染是非常耗費性能的。如果在用戶訪問過程中處理特殊模板的預處理過程,會慢不止壹個數量級,所以我們把預處理過程(轉換後的hbs)提前,在啟動web應用時預編譯。
同時我們發現手柄的壹些默認配置屬性,比如還原處理,在字符串拼接的過程中會損失壹些性能,所以我們可以關閉html片段的還原。