動靜分離:動態資源(jsp、ftl、thymeleaf)與靜態資源(js、css、img)分開部署。
前后分離:接口與視圖分開部署,專業的人做專業的事情。例如:前端使用vue.js ,后端只需要提供接口即可。前端項目與后端項目都是獨立部署的。
如果我們靜態資源與動態資源存放在同一台服務器上面,當靜態資源不斷增多的時候,我們的服務器訪問是扛不住,因為靜態資源消耗過多的帶寬,導致靜態資源無法訪問或者訪問非常的慢。

在一個網站中,靜態資源(js、css、img)是比較占寬帶資源的,動態資源占帶寬很小。1M帶寬=128k/s
所以網站中的靜態資源一般都存放在第三方存儲平台上,例如:七牛雲、阿里雲、騰訊雲等。這些第三方存儲平台內置CDN,進行內容分發,采用就近訪問原則。
CDN內容分發:就是將靜態資源服務器部署在全國各個服務器節點上去。
就近原則:用戶訪問的時候,遵循就近原則,離得越近傳輸速度越快,離得越遠傳輸的速度相對來說就會慢一些。就像我們訪問國外的網站速度比較慢,而 訪問國內的網站速度就會快一些。

靜態資源在前端頁面直接配置的是靜態服務器上面的資源地址,直接走第三方服務器,而不在走我們本地的服務器。
動靜分離架構模式的缺點:
舉栗子:我們服務訪問呢地址:http://www.test.coim,靜態資源存放地址:http://static.test.com。
這樣的話就會產生跨域的問題,因為域名地址不同。所以這個時候我們可以使用Nginx來解決跨越問題。
解決跨域問題:
當訪問 www.test.com/static的時候 使用 nginx 攔截 轉發到 static.test.com
當訪問 static.test.com 的時候轉發到真實的ip地址。
分布式Session的問題
產生原因:因為session是存儲在服務器端的,當服務集群部署的話默認是被輪詢訪問的,這時候一台服務器存儲的有session,另外一台服務器沒有存儲session就會產生分布式session的問題。
解決方案:
1、使用Spring-session 框架
2、使用 token 代替 session ,token 存儲在redis中。

