部署Web应用程序:更新cdn上的资产以及对服务器上资产的引用

时间:2014-01-17 00:07:30

标签: web-applications deployment build-process cdn assets

我将我的Web应用程序服务器代码部署到云平台。 在部署工具获取所有文件(来自本地文件系统或git repo)的过程中,将其上载到云并重新启动应用程序。

每当我的前端应用资产(图片,css,js)发生变化时,我需要重新部署整个应用(并重新启动它)。没有内置文件API来仅上传应用程序的一些文件。

我的前端应用程序的构建过程准备了所有资产:包含对资产的引用的images,css,js和index.html文件。每个构建资产都有不同的md5名称(如果已更改)以确保缓存。

完成前端构建后,部署整个应用程序。用户请求特定地址,服务器使用新应用程序的index.html进行响应。

我想要的是在仅更改前端应用时避免部署服务器应用。

我可以将新文件上传到CDN,但客户端首先会连接到服务器,它需要知道应该加载哪些资产(实际上它需要正确的index.html作为响应)。

问题是如何在不触及正在运行的服务器应用程序的其他部分的情况下更新服务器上的Web应用程序前端资产和引用。

如何解决这个问题?

我的意思是:

  1. 服务器具有index.html模板
  2. 前端应用的构建过程将新文件上传到CDN
  3. 构建流程更新某些内容库以反映资产中的更改
  4. 每次客户请求 应用程序的服务器,它使用模板构建正确的index.html 和数据库数据。

    不使用数据库的替代选项,每次客户端请求服务器时,服务器首先请求具有正确index.html的某个CDN(或共享位置),并响应客户端。

  5. 哪种方式更合适,以及该问题的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是正确分离业务逻辑和您的视图。 从长远来看,按照下述方式对您的申请进行重组将使您受益。

1.根据您当前的业务逻辑构建API。

2.使用客户端技术(如角度,反应,主干等)将您的视图转换为完整的客户端应用程序。

您的客户端可以轻松推送到CDN(或单独托管),只维护对服务器API的引用。

这样,除了处理API调用之外,您的服务器应用程序对您的视图/客户端一无所知。