您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将HTTP Range Header与字节以外的范围说明符一起使用?

将HTTP Range Header与字节以外的范围说明符一起使用?

绝对-您可以自由指定自己喜欢的任何范围单位。

根据RFC 2616:

3.12范围单位

HTTP / 1.1允许客户端请求仅将一部分 响应实体(一部分)包含在响应中。HTTP / 1.1在范围(第14.35节)和内容范围(第14.16节) 标头字段中使用范围单位。可以根据各种结构单元将实体分解为子范围。

  range-unit       = bytes-unit | other-range-unit
  bytes-unit       = "bytes"
  other-range-unit = token

HTTP / 1.1定义的唯一范围单位是“字节”。HTTP / 1.1 实现可以忽略使用其他单位指定的范围。

关键是最后一段。真正的意思是,当他们编写HTTP / 1.1规范时,他们只概述了“字节”令牌。但是,正如您从“其他范围单位”位可以看到的那样,您可以自由提出自己的令牌说明符。

提出自己的范围说明符确实意味着您必须控制使用该说明符的客户端和服务器代码。因此,如果您拥有公开“ / document / content / http- range-question” URI的后端,那您就很好了。大概您正在使用一个现代的Web框架,该框架可让您检查传入的请求标头。然后,您可以查看Range值以正确执行后备查询

此外,如果您控制向后端发出请求的AJAX代码,则应该能够自行设置Range标头。

但是,您可能会想到一个潜在的弊端:破坏缓存的潜力。如果使用的是自定义范围单位,则客户端和原始服务器之间的所有高速缓存“可能会忽略使用[字节以外的单位]指定的范围”。因此,例如,如果您在前端和后端之间有一个Squid / Varnish缓存,则不能保证您希望的结果将从缓存中得到!

您可能还会考虑一种替代实现,其中使页面成为URI的“参数”而不是使用查询字符串。例如:/ document / content / http-range- question / page / 1。对于您的服务器端来说,这可能需要做更多的工作,但是它是HTTP / 1.1兼容的,因此缓存应该适当地对待它。

希望这可以帮助。

其他 2022/1/1 18:14:24 有521人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶