6

在启用 Rack::Deflater 压缩我的响应正文时,偶然发现了一些奇怪的东西。也许我遗漏了一些东西,但是启用此功能后,响应会被压缩,但是资源的 ETag 在每个请求上都会发生变化。这迫使应用程序每次都响应,而不是发送 304。这在没有启用 Rack::Deflater 的情况下工作,并且我已经验证页面源没有改变。我正在运行一个带有 Thin 作为 Web 服务器的 Rails 应用程序。

Gemfile.lock https://gist.github.com/2510816

有什么办法可以从机架中间件获得更多输出,这样我就可以看到发生了什么?

提前致谢。

4

1 回答 1

11

所以我已经解决了我原来的问题,但仍然没有得到想要的结果。原来 Rack::Deflater 需要在中间件堆栈中的 Rack::ETag 之前。仍然不确定为什么这会导致 ETag 更改每个请求,但如果我更改config.middleware.use "Rack::Deflater" config.middleware.insert_before "Rack::ETag", "Rack::Deflater"那么 ETag 在请求之间变得一致就足够了。我仍然没有得到 304,但我认为那是因为不正确的缓存控制标头并且与原始问题无关。希望这对将来的某人有所帮助。

于 2012-04-28T12:05:07.973 回答