天天看點

前端優化之資源壓縮

一、基礎知識

0x1 浏覽器請求過程

前端優化之資源壓縮

請求過程中一些潛在的性能優化點

  • dns是否可以通過緩存減少dns查詢時間?
  • 網絡請求的過程走最近的網絡環境?
  • 相同的靜态資源是否可以緩存?
  • 能否減少請求http請求大小?
  • 減少http請求
  • 服務端渲染

0x2 資源的合并與壓縮

  • 減少http請求數量
  • 減少請求資源的大小

二、資源壓縮

0x1 HTML壓縮

HTML代碼壓縮就是壓縮這些在文本檔案中有意義,但是在HTML中不顯示的字元,包括空格,制表符,換行符等,還有一些其他意義的字元,如HTML注釋也可以被壓縮。

前端優化之資源壓縮

進行html壓縮前後效果對比

壓縮方式

  • 使用線上網站進行壓縮
  • nodejs提供了html-minifier工具
  • 後端模闆引擎渲染壓縮

0x2 CSS壓縮

前端優化之資源壓縮

無效代碼删除

css語義合并

壓縮方式

  • 使用線上網站進行壓縮
  • 使用html-minifier對html中的css進行壓縮
  • 使用clean-css對css進行壓縮

0x3 Js壓縮與混亂

無效字元的删除

剔除注釋

代碼語義的縮減和優化

代碼保護

壓縮方式

  • 使用線上網站進行壓縮
  • 使用html-minifier對html中的js進行壓縮
  • 使用uglifyjs2對js進行壓縮

三、資源合并

前端優化之資源壓縮

合并前的問題:

  • 檔案與檔案之間有插入的上行請求,增加了N-1個網絡延遲受
  • 丢包問題影響更嚴重
  • 經過代理伺服器時可能會被斷開

合并後帶來的問題:

  • 首屏渲染問題
  • 緩存失效問題

解決方案:

  • 公共庫合并
  • 不同頁面的合并
  • 見機行事,随機應變

合并方式:

  • 使用線上網站進行檔案合并
  • 使用nodejs實作檔案合并

可以利用fis3對資源進行壓縮。