偶然发现了一些奇怪的事情。也许我错过了一些东西,但启用此功能后,响应被压缩,但资源的ETag会在每个请求上发生变化。这迫使应用程序每次响应而不是发送304.这可以在没有启用Rack :: Deflater的情况下工作,并且我已经验证页面源不会更改。我正在运行一个瘦的rails应用程序作为Web服务器。
Gemfile.lock的 https://gist.github.com/2510816
有没有我可以从机架中间件获得更多输出,所以我可能会看到最新情况?
提前致谢。
答案 0 :(得分:9)
所以我已经解决了原来的问题,但仍然没有得到理想的结果。事实证明,Rack :: Deflater需要在中间件堆栈中的Rack :: ETag之前。仍然不确定为什么这会导致ETag更改每个请求,但是如果我将config.middleware.use "Rack::Deflater"
更改为
config.middleware.insert_before "Rack::ETag", "Rack::Deflater"
,那么ETag会在请求之间变得一致。我仍然没有得到304,但我认为这是因为不正确的缓存控制头并且与原始问题无关。希望这有助于将来的某个人。