2008年11月20日 星期四

asset_host

http://chadfowler.com/2007/2/18/edge-rails-goody-distributed-asset-hosts
http://ihower.idv.tw/blog/archives/1707

Rails 還有個功能是可以設定 asset_host,方便你把靜態檔案(即 /public 目錄)用更快速便宜的 web server 提供 (別讓 mongrel 直接提供這些靜態檔案啊),像 Registrano 就乾脆把所有靜態檔案放在另一台網路稍快的 server 上:

# /config/environments/production.rb
config.action_controller.asset_host = 'http://asset.example.org"

Rails2 更支援可以同時分散到四台 asset0~asset3,只要加%d (當然你的 DNS 也要設好,最簡單的作法可以指到同一台 server)

# /config/environments/production.rb
config.action_controller.asset_host = 'http://asset%d.example.org"

好處是可以讓 browser 同時平行下載 (單一 domain 的下載最多同時兩個 persistent connections, see HTTP連線管理一文),因此如果你的網站靜態檔案(如圖檔)很多的話,應該會有不錯的效果。不過在 Registrano 實測效果並沒有很好,這是因為 DNS Lookup 也要花時間(即上述第9點)

P.S. 使用 asset host 的一個副作用是 cross domain 問題,因此吃了不少 Javascript library 苦頭。

沒有留言: