You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中URI.open与open获取同一URL文件大小结果不同的原因

问题原因解析

这俩方法返回的文件大小不一样,核心是它们处理HTTP响应的默认行为存在差异,具体细节如下:

  • open是Ruby内核(Kernel模块)自带的方法,引入open-uri后只是扩展了它支持URI资源的能力,但默认不会自动解码服务器返回的gzip压缩内容;
  • URI.open是URI模块专门提供的URI资源读取方法,默认会自动识别并解压服务器返回的gzip压缩内容。

Reddit的服务器会给请求返回gzip压缩后的页面内容,所以:

  • open拿到的是原始压缩后的字节数据,size显示的是压缩后的文件大小;
  • URI.open会自动完成解压操作,拿到的是解压后的纯文本内容,size自然比前者大。

你可以通过打印两者的响应头验证这一点,能看到响应头里的Content-Encoding: gzip字段,对比解压前后的大小就能完全对应上差异。


内容的提问来源于stack exchange,提问作者The Observation Deck Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:09:49