2021-16:对象存储的ETag

2021-16:对象存储的ETag

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

ETag用于区分资源版本,其生成方式依赖于实现。常见的上传方式包括PostObject和PutObject。小文件通常使用MD5算法生成ETag,但大文件需考虑其他算法。开发时需注意ETag与Content-MD5的区别。

🎯

关键要点

  • ETag用于区分资源版本,其生成方式依赖于实现。
  • ETag的语义用于区分不同版本的资源,生成方式可以是内容的哈希、最后修改时间的哈希或自定义版本号。
  • 常见的上传方式包括PostObject、PutObject、追加对象、分块上传和页面上传。
  • 对于PostObject和PutObject,大多数对象存储服务限制最大为5GB,可以计算其哈希并在上传时写入对象的元数据。
  • 大多数对象存储服务使用MD5算法生成ETag,但其他上传方法的ETag不一定是MD5。
  • MD5算法不是滚动哈希算法,无法通过已知的A和B的MD5值计算A+B的MD5。
  • 对于大文件上传,通常会结合每个部分的ETag计算其MD5并返回。
  • 开发时需注意ETag与Content-MD5的区别,不能简单地将ETag视为对象内容的Content-MD5。

延伸问答

ETag的主要作用是什么?

ETag用于区分资源的不同版本。

ETag是如何生成的?

ETag的生成方式可以是内容的哈希、最后修改时间的哈希或自定义版本号,具体取决于实现。

在对象存储中,常见的上传方式有哪些?

常见的上传方式包括PostObject、PutObject、追加对象、分块上传和页面上传。

对于大文件的ETag计算有什么特别之处?

对于大文件上传,通常会结合每个部分的ETag计算其MD5并返回。

ETag和Content-MD5有什么区别?

ETag与Content-MD5的语义不同,不能简单地将ETag视为对象内容的Content-MD5。

为什么MD5算法不适合用于滚动哈希?

MD5算法不是滚动哈希算法,无法通过已知的A和B的MD5值计算A+B的MD5。

➡️

继续阅读