Amazon S3 Cloudfront 部署最佳实践

2024-02-10

我们当前的站点计划是使用 Amazon 的 Cloudfront 服务作为 CSS、JavaScript 和图像等资产文件以及任何其他静态文件的 CDN。

目前,我们在 S3 中有 1 个存储桶,其中包含所有这些静态文件。这些文件根据其内容被分成不同的文件夹,“脚本”是 JS 文件,“图像”是图像等等。

因此,我从一开始就没有意识到,一旦您将存储桶从 S3 部署到 Cloudfront 分发版,那么对该存储桶的每个后续更新都不会再次部署到同一分发版。因此,每次进行静态文件更新时,您似乎都必须将存储桶重新部署到另一个 Cloudfront 实例。

这对于图像来说很好,因为我们可以轻松地确保如果图像发生更改,那么我们只需创建一个新图像。但是,这对于 CSS 和 JS 来说很难做到。

因此,这让我想到了最佳实践问题:

  1. 为每个生产部署创建另一个 Cloudfront 发行版是最佳实践吗?这里的问题是会导致 CNAME 记录出现问题。
  2. 由于 CSS 和 JS 文件的性质以及它们需要轻松修改,最好不要在 Cloudfront 中存储这些文件吗?似乎这个问题的答案是否定的,因为这就是 CDN 的目的。
  3. Cloudfront 是否还有其他我不知道的方法?

您可以向 CloudFront 发出失效请求。

http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html

不过,我们使用自己的服务器作为自定义源,而不是 S3 存储桶。我们有.htaccess alias style_*.css to style.css,我们注入文件修改时间style.css在 HTML 中。当 CloudFront 看到完全不同的 URL 时,它将获取新版本。

(注意:某些 CDN 允许您通过查询字符串来执行此操作,但 CloudFront 会忽略所有查询字符串数据进行缓存,因此.htaccess解决方案。)

edit:CloudFront 现在可以(可选)配置为使用查询字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Amazon S3 Cloudfront 部署最佳实践 的相关文章

随机推荐

  • 如何通过安全 FTP SSL 协议发送文件

    我感谢您就该主题提供的任何帮助 在线注册结束时 我将获取客户数据 多个字段 将它们放入 CSV 文件中 并尝试通过 SSL 协议提交给另一个客户端 但不知道这是如何完成的 我还将信息存储在本地数据库中 希望这个过程有点相似 我已经收到了来自
  • 如何从 Swift 调用 Objective-C 类的工厂方法?

    我有一个 obj c 类 它使用工厂方法将自身实例化为单例 我将该类添加到我的 Swift 桥标头中 并希望从 Swift 类调用此工厂方法 然而 XCode 不让我这么做 obj c代码是 interface MOAssistant NS
  • 生成 Rails 应用程序中使用的数据库架构的图像

    如何生成 Rails 应用程序中使用的数据库模式的图像 你有没有尝试过rake db schema dump 本质上 确保您的database yml文件正在引用您要转储的数据库 然后运行命令 它将获取所述数据库中的所有表和索引 然后将其写
  • Java 中无参构造函数和默认构造函数之间的区别

    实际上我无法理解无参数构造函数和默认构造函数之间有什么区别 import javax swing public class Test extends JFrame public Test super this setSize 200 200
  • Pygame 使用 time.sleep 等待 x 秒而不执行上面的代码

    我正在尝试在 pygame 中重新创建 Pong 并尝试根据得分者将网的颜色更改为红色或绿色 我可以在某人得分后将其保持为红色或绿色 直到另一个人得分 但是 我想在 3 秒后将网络颜色更改回黑色 我尝试使用 time sleep 3 但每当
  • 如何使用 Flask 将 JavaScript 连接到 Python 脚本?

    我用 HTML CSS 创建了一个网站 我还使用 Javascript 来处理事件 单击按钮 现在我想将 Python 脚本与其连接 更重要的是 将 Python 函数的结果返回到我的网站并在那里显示 使用 它们 考虑这样的事情 我有一个带
  • 如何创建“递归sql”

    我想建立 链接 例如 我有 5 个帖子 id 1 id 2 id 3 id 4 id 5 他们有一个序列 id 1 nextId 2 id 2 nextId 4 id 3 下一个Id 0 id 4 nextId 3 id 5 nextId
  • Azure Python SDK - 与 Azure AD 交互

    我有一个服务主体帐户 用于自动化计算和资源管理对象 不会出现任何问题 我似乎无法与之交互的是房子的 Azure AD 一侧 我正在得到一个 azure graphrbac models graph error GraphErrorExcep
  • 使用 BASH 或 awk 或 sed 或其他方式删除文件的前两行

    我试图通过不将文件打印到另一个文件来删除文件的前两行 我不是在寻找一些奇特的东西 这是我对 awk 的 失败的 尝试 awk NR gt 2 print myfile 这会抛出以下错误 awk NR gt 2 print awk synta
  • Java静态上下文

    我正在使用一个具有非静态方法调用的包 它不会让我从静态上下文中调用此方法 我无法更改非静态方法 如何调用该方法 从该类创建一个对象并调用该对象的方法 import com acme myclass MyClass obj new MyCla
  • 创建新的 Azure Cosmos DB 时缺少位置选项

    我想在我的免费 MPN 订阅下创建一个新的 Azure Cosmos DB 并希望将位置设置为 欧洲 西欧 就像我为 ResourceGroup 所做的那样 但此位置 以及许多其他位置 是无法使用 请在此处查看完整列表 https i st
  • 从 boost::filesystem::is_directory 捕获异常

    我目前正在从 boost filesystem is directory 捕获错误 并通过在异常上调用 what 向用户显示错误 这给出了失败的原因 但该错误对用户来说很奇怪 例如 boost filesystem is directory
  • 从静态库中删除所有符号是否会阻止链接?

    据我所知 链接器的工作是将目标文件中未定义的符号与静态库中定义的符号进行匹配 如果找到 正确的符号定义将包含在最终的可执行文件中 这就是所谓的符号解析 那么如果所有符号都从静态库中删除会发生什么呢 它是否会阻止链接器正确解析符号 剥离符号是
  • 在heroku上通过bundler安装linecache

    我在 Rails 3 0 应用程序上使用 RVM 并使用 Ruby 1 9 2 which ruby home ved rvm rubies ruby 1 9 2 p136 bin ruby 当我推送到heroku时 出现以下错误 Inst
  • SFTP 中出现“无法规范化:没有这样的文件或目录”错误的原因是什么?

    我正在尝试使用SFTP将整个目录上传到远程主机 但出现错误 我知道SCP确实有效 但我真的想找出SFTP的问题 我使用的命令如下 echo put r LargeFile echo quit sftp vb username remoteh
  • 实体框架 6 中自我跟踪实体的替换

    我确信大多数 NET 开发人员都必须以某种方式面对这个问题 问题很简单 我正在升级我的项目 NET 4 到 NET 4 5 1 到目前为止 升级进展顺利 但是当我从 EF4 升级到 EF6 时 我在查询中确实遇到了很多错误 其中一些与我所做
  • 有哪些工具可用于将 ipython 笔记本导出为 PDF 文件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个格式良好的 ipython 笔记本 其中包含 Markdown 单元格之类的东西 我想知道导出为
  • Twig 访问对象

    我想访问树枝模板内对象的值 通常我会得到这样的回报 echo lang gt get test 但是我怎样才能在模板中用树枝做同样的事情呢 我尝试了很多方法 但没有一个有效 例如我尝试过 attribute lang get test 结果
  • 使用字符串、反模式的依赖注入(ninject)?

    我有一些代码使用 ninject 注入依赖项 这些依赖项是实际的字符串 例如 这是注入字符串而不是创建新对象的反模式吗 IE 我想注入用户名和密码 创建一个名为 凭证 的小类 其中包含 用户名 和 密码 两个属性并注入它实际上会更好吗 将字
  • Amazon S3 Cloudfront 部署最佳实践

    我们当前的站点计划是使用 Amazon 的 Cloudfront 服务作为 CSS JavaScript 和图像等资产文件以及任何其他静态文件的 CDN 目前 我们在 S3 中有 1 个存储桶 其中包含所有这些静态文件 这些文件根据其内容被