2014-01-17 80 views
0

我將我的Web應用程序服務器代碼部署到雲平臺。 雖然部署工具獲取所有文件(從本地文件系統或git回購)的過程,但將其上傳到雲並重新啓動應用程序。部署Web應用程序:更新cdn上的資產和對服務器資產的引用

每當我的前端應用程序資產(圖像,CSS,JS)發生變化時,我需要重新部署整個應用程序(並重新啓動它)。沒有構建文件API來僅上傳應用程序的一些文件。

我的前端應用程序的構建過程會準備好所有資產:包含對資產的引用的images,css,js和index.html文件。每個構建資產都有不同的md5名稱(如果已更改)以確保緩存。

前面構建完成後,部署整個應用程序。用戶請求某個地址和服務器用新應用程序的index.html進行響應。

我想要的是避免部署服務器應用程序,當只有前端應用程序發生變化時。

我可以上傳新文件到CDN,但客戶端首先會連接到服務器,它需要知道它應該加載哪些資產(實際上它需要正確的index.html作爲響應)。

問題是關於更新服務器上的Web應用程序前端資源和引用,而不觸及正在運行的服務器應用程序的其他部分。

如何解決這個問題?

我雖然的:

  1. 服務器具有的index.html模板
  2. 前應用程序的構建過程中上傳新文件到CDN
  3. 建造過程更新一些enties indatabase,以反映資產
  4. 變化
  5. 每次客戶端請求 該應用程序的服務器,它使用模板 和數據庫數據構建正確的index.html。

    不使用數據庫的替代選項,每當客戶端請求服務器時,服務器首先使用正確的index.html請求某個CDN(或共享位置),並響應客戶端。

哪種方法更合適,以及該問題的最佳實踐是什麼?

+0

問題是你的index.html鏈接到cdn上的一些「app.js」,但是也許你的js文件的名稱在每個資產構建後發生變化?例如。第一次構建「app_1.js」,第二次構建「app_2.js」等等(可能是一個非常簡單的例子)?我認爲你可以避免在構建之間重命名資產,但是在更新到達時使用CDN的工具來根據需要來緩存緩存。 – ahaurw01

+0

你的意思是什麼CDN的工具? – WHITECOLOR

回答

0

解決此問題的一種方法是正確分離業務邏輯和視圖。 按照下面所述的方法重新構建您的應用程序將長期受益。

1.從您當前的業務邏輯中構建一個API。

2.Convert你的意見與一個客戶端技術,如角,反應,骨幹完整的客戶端應用程序等

您的客戶端可以推到一個CDN(或託管分開)方便,只維護參考您的服務器API。

這樣,除了處理API調用之外,您的服務器應用程序並不知道任何關於您的視圖/客戶端的信息。

相關問題