http://blog.xdite.net/posts/2014/01/04/another-three-asset-pipeline-speed-up
=======
前年我寫過一篇 3 招實用 Asset Pipeline 加速術。
這次打算再追加三招。
(如果打算在遠端 Compile Asset 的話)
在 config/enviorments/production.rb
config.assets.cache_store = :dalli_store
在 config/enviorments/production.rb
config.assets.configure {|env|
env.cache = ActiveSupport::Cache.lookup_store(:dalli_store)
}
asset compile 往往卡在遠端的機器不夠力,所以編譯很慢。但是現在大家的開發機 Mac 系列,其實都是遠遠比遠端的機器快上許多的....
capistrano-local-precompile 這個 Gem 可以協助你在 local compile 再 sync 到遠端機器,再自動清掉本地端殘留。
效率會提升一些。
提升非常多倍。(我有一個 project 提升 120 秒以上)
這主要是因為自 Rails 4 起,Sprocket 又進行了大重寫。效率有非常非常顯著的提升....
如果有興趣在 Rails 3 上跑 Sprocket 2 的話,可以參考前幾天我這篇 在 Rails 3 project 上跑 Rails 4 的 Asset Pipeline。
換成 Sprockets2 + local compile 後,我觀察到本地的 log:
Writing /Users/xdite/my_projects/logdown/public/assets/icons/cloud-download-3ddd0707f2f307ba14c27f28e0b293a2.png
Writing /Users/xdite/my_projects/logdown/public/assets/icons/file-image-081d8086dbbde1b8a014b48ab7d78f9b.png
Writing /Users/xdite/my_projects/logdown/public/assets/icons/pen-c0e637cd3afab39f2e71fa3aa281f26e.png
Writing /Users/xdite/my_projects/logdown/public/assets/icons/search-488fbba73b9cc2d919b788a75f11f6f6.png
Writing /Users/xdite/my_projects/logdown/public/assets/icons/shield-b985accbe4b4f9e642de39af2feb1e62.png
Writing /Users/xdite/my_projects/logdown/public/assets/icons/suitcase-eb8f22fb62c98151fe0baa921a944ec6.png
Writing /Users/xdite/my_projects/logdown/public/assets/icons/user-2481c420fc2240c17a86fc39d4dcbfc2.png
Writing /Users/xdite/my_projects/logdown/public/assets/search-icon-b446fa9eac4881a0ffef79cd2f9e3ba5.png
Writing /Users/xdite/my_projects/logdown/public/assets/themes/compiling-e416cf4231664a0b4328f0f9225eb844.jpg
Writing /Users/xdite/my_projects/logdown/public/assets/tours/built-in-theme-083f3cc5f7b6a8adc66c0570ae60cc9b.png
Writing /Users/xdite/my_projects/logdown/public/assets/tours/custom-domain-url-84997f582135b96f0438a34aa456dbdf.png
Writing /Users/xdite/my_projects/logdown/public/assets/tours/custom-themes-5e03d9edc032c5073093805e4c93326c.png
也就是 app/assets/images 下的東西其實都是會進行編譯的。編譯這些東西需要耗時間。
而根據 sprockets https://github.com/rails/sprockets-rails 官方的解釋,從 Rails 4 之後值得注意原則是:
也就是不需要 compile 的 Asset 鼓勵開發者搬到 public 底下去...。
套用以上這三個原則,應該可以幫你在編譯 Asset 時又省下「幾分鐘」的時候。