用于将所有静态资产上传到 S3 / CloudFront、替换路径并使旧资产无效的 Grunt 模块
Grunt module(s) to upload all static assets to S3 / CloudFront, replace paths, and invalidate old assets
使用 Grunt、NodeJs 和 Express,我应该使用什么模块:
通过查看资产目录或通过代码库解析,发现应用程序中的所有静态资产(前端 JS、CSS、图像)
将资产上传到 Amazon S3 / CloudFront,使用唯一的 "fingerprinted" 名称重命名每个文件
用 CloudFront URL
替换代码库中每个资产的路径
使旧 CDN 资产失效
这是我第一次使用 CloudFront。我不确定以上所有内容是否可以用 Grunt 完成,或者它是否最好作为 Node/Express 模块来完成。
与Rails、I've read it's as easy as:
# Setup amazon CDN
config.action_controller.asset_host = "xxxxxxxxxxxxx.cloudfront.net"
我正在为节点堆栈寻找类似的解决方案。
使 CDN 资产无效是个坏主意 ®。在 CloudFront 中,最多可能需要 15 分钟才能完成 - 这会为您的部署增加 15 分钟。此外,某些浏览器可能会保存旧文件,因为 URL 相同。
相反,您应该对静态资产进行版本控制并以不同的版本名称发布新版本。
例如:
my-app/1.2.3/main.js
my-app/1.2.4/main.js
依此类推。
这给你两个好处:
- 您可以自信地永远缓存。相同的 URL 将始终提供相同的文件。
- 您可以在发生灾难部署时快速回滚。旧文件在原处。
对于部署到 S3,有专门的插件。
但是,我更喜欢简单地使用 grunt-shell in tandem with the official Amazon AWS CLI
配置它看起来像这样:
shell: {
cp: {
command: "aws s3 cp --recursive dist/ s3://my-bucket/my-app/"
}
}
您可以使用 grunt 从某处读取版本变量并自动将所有文件放入 dist/{version}/
文件夹,同时将 html 中的任何路径替换为正确的 version
路径.
使用 Grunt、NodeJs 和 Express,我应该使用什么模块:
通过查看资产目录或通过代码库解析,发现应用程序中的所有静态资产(前端 JS、CSS、图像)
将资产上传到 Amazon S3 / CloudFront,使用唯一的 "fingerprinted" 名称重命名每个文件
用 CloudFront URL
替换代码库中每个资产的路径
使旧 CDN 资产失效
这是我第一次使用 CloudFront。我不确定以上所有内容是否可以用 Grunt 完成,或者它是否最好作为 Node/Express 模块来完成。
与Rails、I've read it's as easy as:
# Setup amazon CDN
config.action_controller.asset_host = "xxxxxxxxxxxxx.cloudfront.net"
我正在为节点堆栈寻找类似的解决方案。
使 CDN 资产无效是个坏主意 ®。在 CloudFront 中,最多可能需要 15 分钟才能完成 - 这会为您的部署增加 15 分钟。此外,某些浏览器可能会保存旧文件,因为 URL 相同。
相反,您应该对静态资产进行版本控制并以不同的版本名称发布新版本。
例如:
my-app/1.2.3/main.js
my-app/1.2.4/main.js
依此类推。
这给你两个好处:
- 您可以自信地永远缓存。相同的 URL 将始终提供相同的文件。
- 您可以在发生灾难部署时快速回滚。旧文件在原处。
对于部署到 S3,有专门的插件。 但是,我更喜欢简单地使用 grunt-shell in tandem with the official Amazon AWS CLI
配置它看起来像这样:
shell: {
cp: {
command: "aws s3 cp --recursive dist/ s3://my-bucket/my-app/"
}
}
您可以使用 grunt 从某处读取版本变量并自动将所有文件放入 dist/{version}/
文件夹,同时将 html 中的任何路径替换为正确的 version
路径.