動靜分離:動態資源(jsp、ftl、thymeleaf)與靜態資源(js、css、img)分開部署。css
先後分離:接口與視圖分開部署,專業的人作專業的事情。例如:前端使用vue.js ,後端只須要提供接口便可。前端項目與後端項目都是獨立部署的。前端
若是咱們靜態資源與動態資源存放在同一臺服務器上面,當靜態資源不斷增多的時候,咱們的服務器訪問是扛不住,由於靜態資源消耗過多的帶寬,致使靜態資源沒法訪問或者訪問很是的慢。vue
在一個網站中,靜態資源(js、css、img)是比較佔寬帶資源的,動態資源佔帶寬很小。1M帶寬=128k/snginx
因此網站中的靜態資源通常都存放在第三方存儲平臺上,例如:七牛雲、阿里雲、騰訊雲等。這些第三方存儲平臺內置CDN,進行內容分發,採用就近訪問原則。redis
CDN內容分發:就是將靜態資源服務器部署在全國各個服務器節點上去。後端
就近原則:用戶訪問的時候,遵循就近原則,離得越近傳輸速度越快,離得越遠傳輸的速度相對來講就會慢一些。就像咱們訪問國外的網站速度比較慢,而 訪問國內的網站速度就會快一些。跨域
靜態資源在前端頁面直接配置的是靜態服務器上面的資源地址,直接走第三方服務器,而不在走咱們本地的服務器。服務器
舉栗子:咱們服務訪問呢地址:http://www.test.coim,靜態資源存放地址:http://static.test.com。session
這樣的話就會產生跨域的問題,由於域名地址不一樣。因此這個時候咱們可使用Nginx來解決跨越問題。架構
當訪問 www.test.com/static的時候 使用 nginx 攔截 轉發到 static.test.com
當訪問 static.test.com 的時候轉發到真實的ip地址。
產生緣由:由於session是存儲在服務器端的,當服務集羣部署的話默認是被輪詢訪問的,這時候一臺服務器存儲的有session,另一臺服務器沒有存儲session就會產生分佈式session的問題。
解決方案:
一、使用Spring-session 框架
二、使用 token 代替 session ,token 存儲在redis中。