[Rails] 網站效能最佳化
前端部分:
使用 Asset pipeline 原理:將所有的 js 或 css 壓縮打包成單一檔案,減少 HTTP Request 的數量,進而增加網站效能與速度。
把 Scripts 放到最下面 原理:JavaScript 幾乎都是 HTML 跑完在執行,因此可以放到後面再下載。
將 domain 切成多個 原理:HTTP 原理限制一次只能對一個 domain 進行 4 個連線,每個連線各 2 個平行下載。 (1 個批次只能下載 8 個檔案) 將 domian 切成多個可以減少下載批次。
後端部分:
在 controller 裡面加入 includes 原理:使用 includes 可以在第一次查詢時就將所有需要的資料一次查完,以避免 N + 1 Query。 (我們在迴圈當中大量查詢 N 筆資料,再加上開頭查詢的那 1 筆,稱為 N+1。)
資料庫在設計欄位的時候加上索引 index 原理:資料欄位如果沒有加索引,SQL 查詢的時候就會一筆筆檢查資料表中的所有資料,當資料一多的時候就會嚴重降低效能。
使用計數快取 Counter Cache 原理:把你要的資料先加到快取,這樣要資料的時候就不用在跟資料庫請求一次,直接從快取抓。