在应用程序请求路由中配置字节范围请求段大小
作者:Won Yoo
此文档部分适用于用于 IIS 7 及更高版本的 Microsoft 应用程序请求路由版本 2。
目标
了解和配置应用程序请求路由 (ARR) 如何处理字节范围请求。
先决条件
这是 ARR 中的一项高级功能。 本文假定你已熟悉 ARR 的整体功能,并了解如何使用磁盘缓存部署和配置 ARR。 如果尚未这样做,强烈建议在继续操作之前查看以下演练:
- 在应用程序请求路由中配置和启用磁盘缓存
- 使用应用程序请求路由管理缓存层次结构
- 在 CDN 中部署应用程序请求路由
- 在应用程序请求路由上浏览磁盘上的缓存内容
- 删除缓存的对象
- 使用应用程序请求路由手动覆盖缓存控制指令
- 在应用程序请求路由上预热缓存节点
如果尚未安装应用程序请求路由版本 2,可在以下位置下载:
- 此处为适用于 IIS 7 (x86) 的 Microsoft 应用程序请求路由版本 2 (
https://download.microsoft.com/download/4/D/F/4DFDA851-515F-474E-BA7A-5802B3C95101/ARRv2_setup_x86.EXE
)。 - 此处为适用于 IIS 7 (x64) 的 Microsoft 应用程序请求路由版本 2 (
https://download.microsoft.com/download/3/4/1/3415F3F9-5698-44FE-A072-D4AF09728390/ARRv2_setup_x64.EXE
)。
请按照这篇文档中概述的步骤安装 ARR 版本 2。
步骤 1 - 概述 ARR 中的字节范围请求功能。
不同的缓存代理以不同的方式处理字节范围请求。 对于 ARR,字节范围请求被分割成较小的部分,称为“区块”。管理员可配置“区块”的大小,建议根据环境中字节范围请求的典型大小设置大小,以便进一步优化。
此功能的核心是让 ARR 将字节范围请求“重新映射”为段。 如下图所示,当 ARR 收到字节范围请求时,它会尝试将请求分成“区块”,并确定需要发送到源服务器的相应范围(如果缓存节点分层,则会发送到下一层服务器)。收到响应时,ARR 会将内容存储成部分(即“区块”),并重写响应,以匹配 ARR 的原始请求。
通过正常操作,ARR 最终会“收集”所有“区块”部分并缓存整个内容。
步骤 2 - 配置字节范围段大小。
默认情况下,字节范围段大小为 256KB。 管理员可能希望根据环境中的正常流量模式更改此值。
启动 IIS 管理器。
字节范围段大小设置是一个全局设置,在服务器级别进行管理。 选择并展开服务器的根目录。
双击“应用程序请求路由缓存”。
在“操作”窗格中,单击“缓存配置...”。
在“缓存配置”页上,找到“字节范围段大小(KB):”输入字段。
更改该值,然后单击“应用”。 在本演练中,需要将值设置为 1KB。
注意
此设置仅用于演练目的。 1KB 的段大小太小,可能会导致碎片化。
步骤 2 - 验证功能。
需要一个客户端工具,用于创建字节范围请求。 还需要跟踪和捕获 HTTP 请求,以确保客户端根据它发送的请求接收预期的响应。
发送范围为 0-500 的字节范围请求。 在此示例中,字节范围请求已发送到 /pix/IMG_1400.jpg。
如果有办法监视网络,例如使用 Microsoft 网络监视器,请验证客户端是否已收到 0-500 的范围。
在缓存驱动器位置找到 IMG_1400.jpg 所在的文件夹,并键入“dir /a”以列出内容。
验证是否存在名称为 0-1023 的文件。 此文件表示范围 0-1023(即一个区块)。 这是预期行为,因为范围 0-500“适合”在 0-1023 中。
为同一文件发送另一个字节范围请求,范围为 1500-3000。
列出同一目录。 由于范围 1500 到 3000“跨越”了两个“区块”(1024-2047 和 2048-3071),因此额外缓存了两个文件。
最后,为同一文件再发送一个字节范围请求,范围为 2500-4000。 列出同一目录。
在这种情况下,第一个“区块”(2048-3071) 会导致缓存命中。 ARR 确定需要获取第二个“区块”(3072-4095),并仅向源服务器发送字节范围请求,以获取第二部分。 再次使用网络监视器,验证客户端和 ARR 之间以及 ARR 与源服务器之间是否发送了适当的范围请求和响应。
总结
你已成功逐步了解了 ARR 如何支持字节范围请求,并配置了分段大小以优化环境中的设置。
有关 ARR 版本 2 的其他演练,请参阅这篇文章中的文档。