【发布时间】:2014-01-17 00:07:30
【问题描述】:
我将我的 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(或共享位置),然后响应客户端。
哪种方法更正确,该问题的最佳做法是什么?
【问题讨论】:
-
问题是您的 index.html 链接到 cdn 上的一些“app.js”,但每次资产构建后您的 js 文件的名称可能会更改?例如。 “app_1.js”在第一次构建,“app_2.js”在第二次等等(可能是一个非常简化的例子)?我认为您可以避免在构建之间重命名资产,而是使用 CDN 的工具在更新到达时根据需要破坏缓存。
-
CDN 的工具是什么意思?
标签: web-applications deployment build-process cdn assets