Front end Performance Optimization guideline - skylying/ggcary GitHub Wiki

參考資料

高優先

基本上上面三個參考資料就有很多東西可以做, 但在時間資源有限的狀況下我們要先做「CP值最高」的項目, 我們根據 GA 撈出來的資料, 使用 Chrome 的用戶佔大多數, Chrome 本身已經是一個超級先進快速的瀏覽器, javascript 也是跑得很快的程式語言, 所以 web 前端的效能瓶頸大概一開始都不會是在 source code, 而是都會在 asset 的存取, 所以我們的大方向就是朝著「加快資源存取速度」這個方向走

  • CDN
  • JS/CSS minified/uglified
  • nginx GZIP (看 server 用什麼, 不一定是 nginx)

這三件事情最簡單, 也最有用, 效果立竿見影

至於 cache, 雖然也很有效, 但 cache 的配套要到位才能安心使用, 例如

  • 要 Cache 哪些 asset
  • 何時刷新快取
  • Cache TTL 多久
  • 如何強制 ignore cache
  • 是否導入 Chrome 的 application cache
  • 等等

所以目前我不建議先做 Front-end 快取, 而 server API 又不是全都在我們手裡 所以 Backend Cache 也先作罷吧..

如果有時間, 有精力想做 Cache, 請參考這份簡報

http://s.itho.me/modernweb/2017/day1/101-4-CodinCat.pdf 裡面有介紹五花八門的 cache 方法, 但都是 ES6 以上的語法寫的, 要注意一下 至於後面提到的 css/js blocking 的問題, 我是沒試過, 請小心服用, code splitting, 恩..., 小心別走火入魔了

中優先

中優先的項目也算有效, 但做起來麻煩一點, 效益也沒有高優先的項目好, 之後時程比較鬆的時候再說

  • 減少 HTTP request
    • image 的 sprite
    • font icon (參見 bootstrap 的 icon)
  • 圖片優化 => 請專家 Tommy 把圖片變小變漂亮
  • 用 async load js
  • 用 requestAnimationFrame 取代 setTimeout
  • 等等

低優先

要從程式碼去優化的基本上都是低優先, 除非我們已經每日訪客數億次, 可能增進個 1% 效能都有巨大影響的時候才需要來做

  • Critical Rendering Path
  • css syntax optimization
  • 等等