gpt4 book ai didi

node.js - 用于将所有静态 Assets 上传到 S3/CloudFront、替换路径并使旧 Assets 失效的 Grunt 模块

转载 作者:搜寻专家 更新时间:2023-11-01 00:24:20 24 4
gpt4 key购买 nike

使用 Grunt、NodeJs 和 Express,我应该使用什么模块:

  1. 通过查看 Assets 目录或解析代码库,发现应用中的所有静态 Assets (前端 JS、CSS、图像)

  2. 将 Assets 上传到 Amazon S3/CloudFront,使用唯一的“指纹”名称重命名每个文件

  3. 将代码库中每个 Assets 的路径替换为 CloudFront URL

  4. 使旧 CDN Assets 失效

这是我第一次使用 CloudFront。我不确定是否可以使用 Grunt 完成以上所有内容,或者是否最好将其作为 Node/Express 模块来完成。

带导轨,I've read it's as easy as :

# Setup amazon CDN
config.action_controller.asset_host = "xxxxxxxxxxxxx.cloudfront.net"

我正在为 Node 堆栈寻找类似的解决方案。

最佳答案

使 CDN Assets 无效是一个坏主意 ®。在 CloudFront 中,最多可能需要 15 分钟才能完成 - 这会为您的部署增加 15 分钟。此外,某些浏览器可能会保留旧文件,因为 URL 相同。

相反,您应该对静态 Assets 进行版本控制并以不同的版本名称发布新版本。

例如:

my-app/1.2.3/main.js
my-app/1.2.4/main.js

依此类推。

这有两个好处:

  • 您可以自信地永远缓存。相同的 URL 将始终提供相同的文件。
  • 您可以在发生灾难部署时快速回滚。旧文件在原处。

要部署到 S3,有专门的插件。但是,我更喜欢简单地使用 grunt-shell串联官方Amazon AWS CLI

配置它看起来像这样:

shell: {
cp: {
command: "aws s3 cp --recursive dist/ s3://my-bucket/my-app/"
}
}

您可以使用 grunt 从某处读取版本变量并自动将所有文件放入 dist/{version}/ 文件夹,同时将 html 中的任何路径替换为正确的 版本路径。

关于node.js - 用于将所有静态 Assets 上传到 S3/CloudFront、替换路径并使旧 Assets 失效的 Grunt 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com