云端文件名
Cloudfront file names
我正在一家初创公司的工作中学习 AWS 和 Cloudfront (CF)。由于时间关系,大部分学习不是很系统(不深入)。一个问题我就是找不到解决方案。我的 CF 发行版链接到一个 S3 存储桶,其中包含所有资产(CSS、JS 文件等)。存储桶中的文件名如下所示:
我们曾在大学学习过 CDN,我记得他们计算文件的哈希值并将这些哈希值用于 "find" 服务器的位置 (IP)(在分发中,类似于名称解析在 DNS 中)该文件为其提供服务的位置。也许我误解了那部分?
因此问题:
- CF 提供的名称中的字母数字序列是什么?那是哈希吗?
- 谁计算该值:CF、S3 或部署过程?
- 为什么该值有时不同并导致服务器出现 404 错误?
此外,值得注意的是,在某些时候部署是使用 capistrano
完成的(是的,它是 Rails),它使用 asset_sync
gem 来推送资产到 S3。但是,在新产品中我们没有使用它 - 只是对所有资产进行版本控制。
- what is that alphanumeric sequence in the names served by CF? Is that a hash?
是的。 32 字节散列,可能是 SHA-256。
- who calculates that value: CF, S3 or deployment process?
None 个。这实际上是 Rails 的一部分 - 它会向您的文件名添加一个 'version' 哈希,以便您可以发送 far-future 到期 HTTP headers (例如,您可以对客户端浏览器说"cache this file, and you don't need to fetch it from the server again for a year").
在没有哈希的情况下这样做会在您更新资产时造成麻烦,因为每个用户都必须 hard-reload(没有缓存)才能获得新版本。如果您将版本散列和 link 更改为新 HTML 头部中的散列,则
浏览器再次获取它,因为它是一个新文件。
- why is that value different sometimes and results in 404 errors on the server?
见上文。散列随您发布的资产的每个版本而变化;如果有人试图获取旧资产或哈希值不再存在于您的 S3 存储桶中的资产,则会导致 404。
我正在一家初创公司的工作中学习 AWS 和 Cloudfront (CF)。由于时间关系,大部分学习不是很系统(不深入)。一个问题我就是找不到解决方案。我的 CF 发行版链接到一个 S3 存储桶,其中包含所有资产(CSS、JS 文件等)。存储桶中的文件名如下所示:
我们曾在大学学习过 CDN,我记得他们计算文件的哈希值并将这些哈希值用于 "find" 服务器的位置 (IP)(在分发中,类似于名称解析在 DNS 中)该文件为其提供服务的位置。也许我误解了那部分?
因此问题:
- CF 提供的名称中的字母数字序列是什么?那是哈希吗?
- 谁计算该值:CF、S3 或部署过程?
- 为什么该值有时不同并导致服务器出现 404 错误?
此外,值得注意的是,在某些时候部署是使用 capistrano
完成的(是的,它是 Rails),它使用 asset_sync
gem 来推送资产到 S3。但是,在新产品中我们没有使用它 - 只是对所有资产进行版本控制。
- what is that alphanumeric sequence in the names served by CF? Is that a hash?
是的。 32 字节散列,可能是 SHA-256。
- who calculates that value: CF, S3 or deployment process?
None 个。这实际上是 Rails 的一部分 - 它会向您的文件名添加一个 'version' 哈希,以便您可以发送 far-future 到期 HTTP headers (例如,您可以对客户端浏览器说"cache this file, and you don't need to fetch it from the server again for a year").
在没有哈希的情况下这样做会在您更新资产时造成麻烦,因为每个用户都必须 hard-reload(没有缓存)才能获得新版本。如果您将版本散列和 link 更改为新 HTML 头部中的散列,则 浏览器再次获取它,因为它是一个新文件。
- why is that value different sometimes and results in 404 errors on the server?
见上文。散列随您发布的资产的每个版本而变化;如果有人试图获取旧资产或哈希值不再存在于您的 S3 存储桶中的资产,则会导致 404。