web前端優化10點總結
實際上,我們通過前臺web端的梳理和邏輯的優化(哪怕是一個小的處理細節)都可以提高我們的頁面響應速度,從而不斷改善使用者體驗和提升使用者價值。這裡主要有下面幾點分享::
1, 對頁面內容按照優先順序進行分塊,然後根據不同的級別決定各塊拉取的時機。
就象版本特性一樣,我們可以通過不斷的敏捷迭代去實現使用者最重要最care的特性,實際上,我們的頁面內容也是可以根據使用者的需求劃分優先順序的,
把使用者最重要,最緊迫想看到的內容第一時間“送”到使用者的面前,而不是第一時間去載入一些使用者認為不是非常重要的內容,而這種內容一般可以延遲載入(晚點看到使用者也不會覺得很不爽)。而使用者如果沒有第一時間看到這些內容會產生“失落感”和“迷失感”,從而會對這個站點的體驗迅速產生“不滿”,那麼這些內容我們都可以認為是高優先級別的,應該安排在早點拉取,比如炫鈴,使用者最想看到的就是炫鈴的一個個
2, 不要用<script src=’xxxx.php’></script>的形式實現靜態頁面拉取動態內容。
<script>拉取內容的方式本質上是一種同步模型,通過該script請求的資源如果無法及時拉取到,頁面是無法繼續往下渲染的,通過這種方式,我們無法享受到
靜態頁面帶來的好處。
3, 減少頁面拉取的圖片數目很重要。
瀏覽器拉取頁面圖片的開銷是比較大的,而實際上,我們的頁面為了提升使用者體驗使用了大量圖片,這裡我們常採用cdn存放,圖片合併(幾個圖片合成一個,然後使用css進行擷取片斷顯示),永久cache(存在圖片變更的維護成本,工具的建設等),甚至有些效果是可以用css來實現的代替圖片
4, 統計需要等非業務邏輯的實現方案儘量要輕量化。
為了實現一個isdstat統計,跳轉了一次php,這樣的代價有點高,可以等到使用者的頁面資料拉取完畢後“偷偷”的傳送個請求去實現統計即可,基本原則是:
統計出現的位置1,不能影響頁面功能;2,發到頁面最後執行。
5, 對效能要求更高的站點首頁可以單獨處理。
首頁作為一個站點門面,可以進行特別處理:如單獨build成靜態頁面,寫只對該首頁有用的js等,會員這邊對好多首頁是直接使用html頁面而非php。
6, Js指令碼的執行順序也是重要的web優化方向。
Js的一般執行順序是從上到下的執行,但defer屬性在IE下可以延遲指令碼的執行時機(Firefox忽略該屬性),特別是結合src屬性的使用可以告訴瀏覽器先從後臺下載該js程式碼但不立即執行它,從而實現延遲載入的效果。
7, 別忘了php的邏輯也是重要的優化方向
Php方面的優化主要包括兩點:1,php本身的優化,包括減少不必要的包含檔案,php不同寫法的效能差異,php的環境配置等,這裡可以參考下網上的php的40條優化建議
2,php裡面的業務邏輯優化:把更重的邏輯後移到Server其執行,php只負責接入;考慮是否可以把部分邏輯省略,去掉重複呼叫的介面等。
8, 充分利用瀏覽器的cache機制,必要時,考慮實現js層面的cache;
通過設定http頭中的Cache-control和 Expires 欄位,可以利用瀏覽器本身的cache,從而減少http請求數,如果有必要,特別是在js模板替換方面,可以實現js層面的cache層,把已經parse後的模板內容進行cache。如何使用cache-control和expires可以參考以下網址:
9, 儘量少用重定向機制;
Header(“Location:url”);會增加兩次瀏覽器和web server之間的來回,因此減少這裡的重定向是我們優化的一個重要方向,這裡的例子是會員專區的跳轉優化。
10, 考慮cpu和記憶體資源和頻寬資源的互換。
就好像演算法設計中的時間和空間複雜度一樣,我們可以通過緩衝中間的計算結果減少計算的時間,但相應的增加儲存空間,相應的,如:我們可以利用json從伺服器上拉取資料,由於json的簡潔性,使得資料通訊量比較小,一旦拿到客戶端,在對json資料進行模板替換,生成html程式碼(生成的程式碼一般比json大許多),達到利用使用者cpu和記憶體資源降低頻寬壓力的目的。
11, 其他:
對js和css進行壓縮,去重,合併等處理;html儘量使用標準規範的寫法,提高渲染引擎的執行效率;對廣告圖片進行適當的壓縮處理;
tenfyguo 於2010年01月tx