使用Grunt,NodeJs和Express,我应该使用哪些模块:
通过查看资产目录或解析代码库,发现应用中的所有静态资产(前端JS,CSS,图像)
将资源上传到Amazon S3 / CloudFront,使用唯一的“指纹”名称重命名每个文件
使用CloudFront网址替换代码库中的每个资产的路径
使旧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"
我正在为节点堆栈寻找类似的解决方案。
答案 0 :(得分:4)
使CDN资产无效是一个坏主意®。在CloudFront中,最多可能需要15分钟才能完成 - 这将为您的部署增加15分钟。此外,某些浏览器可能会保留旧文件,因为URL是相同的。
相反,您应该对静态资产进行版本控制,并以不同的版本名称发布新版本。
例如:
my-app/1.2.3/main.js
my-app/1.2.4/main.js
等等,等等。
这给你带来两个好处:
对于部署到S3,有特定的插件。 但是,我更喜欢简单地使用grunt-shell与官方Amazon AWS CLI
一起使用配置它看起来像这样:
shell: {
cp: {
command: "aws s3 cp --recursive dist/ s3://my-bucket/my-app/"
}
}
您可以使用grunt从某处读取版本变量,并自动将所有文件放在dist/{version}/
文件夹中,同时将html中的所有路径替换为正确的version
路径。