動靜分離 與 前后分離的區別


動靜分離:動態資源(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中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM