swift支持对象版本(归档)管理,但是,主要有两种不同的方式去实现:
1、PUT这样的header:"X-History-Location:history_container"到current_container。表明history_container是被put数据的current_container的历史库。current_container里面的每个object,可以重复进行put,如果里面已经有了这个object,那么老的历史版本就会出现在history_container里面,其中这个归档的object在history_container里面的命名规则为:[xxx][ObjectName]/[timestamp],其中xxx为ObjectName的长度,使用16进制表示,ObjectName则为原对象名称,timestamp则为归档的时间。比如current里面有一个versiontest.xml的obeject,那么第二次被put之后,归档库里面的object名称则是:00fversiontest.xml/1520240118.12936。
2、PUT这样的header:"X-Versions-Location:version_container"到current_container。表明version_container是被put数据的current_container的归档库。current_container里面的每个object,可以重复进行put,如果里面已经有了这个object,那么老的历史版本就会出现在version_container里面,其中这个归档的object在version_container里面的命名规则为:[xxx][ObjectName]/[timestamp],其中xxx为ObjectName的长度,使用16进制表示,ObjectName则为原对象名称,timestamp则为归档的时间。比如current里面有一个versiontest.xml的obeject,那么第二次被put之后,归档库里面的object名称则是:00fversiontest.xml/1520240118.12936。
两种用法都可以使用,但是有细微的差别:如下:
| 用法 | X-History-Location | X-Versions-Location |
| 二次put | 老版本进入归档库 | 老版本进入归档库 |
| delete当前库的object | 历史版本不变 | 老版本还原到当前库 |
| 从当前库删除 | 一次删除即可,但是历史版本仍留在历史库 | 有多少个历史版本就需要清理多少次 |
Swift 提供了对象版本(归档)管理功能,主要通过两种方式实现:1) 使用 'X-History-Location' 头将历史记录存储在特定容器中,归档对象以 [长度][名称]/[时间戳] 的形式命名。2) 利用 'X-Versions-Location' 头创建归档库,归档规则相同。两种方法在实际应用中略有差异。
383

被折叠的 条评论
为什么被折叠?



