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

Web applications 部署web应用程序:更新cdn上的资产和对服务器上资产的引用,web-applications,deployment,build-process,cdn,assets,Web Applications,Deployment,Build Process,Cdn,Assets,我将web应用服务器代码部署到云平台。 在这个过程中,部署工具从本地文件系统或git repo获取所有文件,将其上载到云并重新启动应用程序 每次我的前端应用程序资产图像、css、js发生变化时,我都需要重新部署整个应用程序并重新启动它。没有内置的文件API,只能为应用程序上载一些文件 我的前端应用程序的构建过程准备了所有资产:图像、css、js和包含资产引用的index.html文件。如果更改以确保缓存,每个构建资产都有不同的md5名称 前端构建完成后,部署整个应用程序。用户请求特定地址,服务器

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

每次我的前端应用程序资产图像、css、js发生变化时,我都需要重新部署整个应用程序并重新启动它。没有内置的文件API,只能为应用程序上载一些文件

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

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

我想要的是避免部署服务器应用程序,因为只有前端应用程序发生了更改

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

问题在于更新服务器上的web应用程序前端资产和引用,而不触及正在运行的服务器应用程序的其他部分

如何解决这个问题

我的想法是:

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

另一个不使用数据库的选项是,每次客户端请求服务器时,服务器都会首先请求具有正确index.html的一些CDN或共享位置,并响应客户端


哪种方法更正确,解决这个问题的最佳实践是什么?

解决这个问题的一种方法是适当地分离业务逻辑和您的视图。 从长远来看,按照下面所述的思路重新构造应用程序将使您受益

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

2.使用客户端技术(如angular、react、backbone等)将视图转换为完整的客户端应用程序

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


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

问题在于您的index.html链接到cdn上的某些app.js,但在每次构建资产后,js文件的名称可能会更改?例如,第一次构建时使用app_1.js,第二次构建时使用app_2.js,等等。这可能是一个极其简化的示例?我想你可以不用在构建之间重命名资产,而是在更新到达时使用你的CDN工具根据需要破坏缓存。你指的是什么CDN工具?