💡
原文英文,约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。
🏷️
标签
➡️