前言:
在web性能優化的領域, 常常能聽到一個詞, 就是靜態/動態資源分離. 那靜態/動態資源分離到底是什麼呢?
本文不講文件系統服務, 雲存儲, 也不講基於CDN的優化. 就簡單講講基於nginx+tomcat的實現原理和部署方式.css
體驗:
咱們先來看個例子, 好比訪問百度首頁. 其訪問速度在各個資源的時間消耗比.
html文件的獲取很快, 時間消耗也少, 大部分時間都消耗在圖片和javscript代碼文件的下載中. 所以咱們對網站訪問速度的衡量評估, 有個較理性的定量標準.html
基本原理:
動態web服務器, 自己就是爲了支持動態生成頁面而設計, 其對靜態資源的處理性能有所犧牲. 所以再承擔了較重的動態數據處理工做以後, 仍處理靜態資源, 其總體的服務能力, 是有必定的折扣的.
鑑於這種狀況, 有人就引入了靜態web服務器, 來承擔靜態資源的訪問. 這樣就大大提升了web服務器總體的服務能力.
總而言之, 靜態/動態資源分離, 說白了就是靜態web服務器(apache, nginx)承擔靜態資源的訪問, 動態web服務器(tomcat, jboss, jetty)承擔動態資源的訪問.nginx
nginx靜態資源配置:
上面說了那麼多, 其實真實的實戰也就多了幾句簡單的配置而已. 不過這個性能優化的意識是須要有得.
nginx中, location指令的匹配優先級, 是遵循正則匹配優於普通字符串匹配的原則, 切勿過度關注配置項的先後順序.
靜態資源的nginx本地化, 只須要配置靜態資源的正則匹配規則, 同時指定其目錄位置便可.
好比以下規則: web
server { listen 80; server_name domain.com www.domain.com; root /path/to/webapp/resource; # 全局配置 location / { proxy_pass http://127.0.0.1:8081; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ { expires 30d; root /path/to/webapp/resource; # 局部配置 } location ~ .*\.(html)$ { root /path/to/webapp/resource; } }
注: 能夠全局配置, 在server一級子元素中配置root, 默認的靜態資源目錄. 也能夠爲每一個location中, 配置其特定的root元素, 指定資源目錄. 同時expires能夠設定靜態資源的緩存時間, 提升了訪問性能.apache
實戰測試:
編寫網頁test.html緩存
<html> <head> </head> <body> <img src="/images/longmao.jpg"/ > </body> </html>
引用的圖片資源爲/images/longmao.jpg
對應的目錄結果以下所示:
在nginx.conf中配置root項爲資源目錄便可.
nginx經常使用的命令:tomcat
nginx -t 檢測配置是否正確 nginx -s reload 熱載新的配置 nginx -s stop|quit|reopen|reload
在網頁上訪問, 既獲得, 以前預想的效果.
測試成功, 棒棒噠, ^_^!!!
若是遇到403錯誤, 有多是權限問題, 儘可能迴避使用root帳號來啓動nginx服務.性能優化
總結:
nginx感受很是的強大, 並且配置也很簡單, 思路清晰明瞭. 權當筆記.服務器
公衆號&遊戲站點:
我的微信公衆號: 木目的H5遊戲世界
我的遊戲做品集站點, 請點擊訪問: http://120.26.221.54/. 微信