Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

有关实施Swift REST API的建议

贡献者

在实施用于 StorageGRID 的 Swift REST API 时,应遵循以下建议。

针对不存在的对象的建议

如果您的应用程序定期检查某个对象是否位于您不希望该对象实际存在的路径上,则应使用 "`available` " 一致性控制。例如,如果应用程序在对某个位置执行 PUT 操作之前对该位置执行 HEAD 操作,则应使用 "`Available` " 一致性控制。

否则,如果 head 操作未找到对象,则在一个或多个存储节点不可用时,可能会收到大量 500 个内部服务器错误。

您可以使用 PUT 容器一致性请求为每个容器设置 "`Available` " 一致性控制。

对象名称建议

不应使用随机值作为对象名称的前四个字符。而应使用非随机、非唯一前缀、例如image。

如果您确实需要在对象名称前缀中使用随机和唯一字符、则应在对象名称前添加目录名称。也就是说,请使用以下格式:

mycontainer/mydir/f8e3-image3132.jpg

而不是以下格式:

mycontainer/f8e3-image3132.jpg

关于"`范围读取`"的建议

如果选择了*压缩存储的对象*选项(配置>*系统设置*>*网格选项*)、则Swift客户端应用程序应避免执行指定要返回的字节数范围的GET对象操作。这些 "`range read` " 操作效率低下,因为 StorageGRID 必须有效解压缩对象以访问请求的字节。从非常大的对象请求少量字节的 GET 对象操作效率尤其低下;例如,从 50 GB 压缩对象读取 10 MB 范围的操作效率非常低。

如果从压缩对象读取范围,则客户端请求可能会超时。

备注 如果需要压缩对象,并且客户端应用程序必须使用范围读取,请增加应用程序的读取超时时间。