1

我的 Rails 3.2 应用程序使用 - via #stale?-If-Modified-Since请求中的 HTTP 标头和Last-Modified响应中的标头来决定它是否应该动态生成一些数据。这在开发中非常有效(无论是使用 webrick 还是 unicorn_rails),这curl -D headers.txt表明如果If-Modified-Since提供了正确的值,则会发送 304 响应,而Last-Modified标头会随请求数据一起发送。

不幸的是,一旦部署在 nginx 后面,If-Modified-Since(提供正确的标头值)都不会传递给 unicorn——因此也不会传递给 Rails 应用程序——也不会Last-Modified传播到客户端:请求是无条件生成的,并且响应永远不会包含正确的标头。

4

1 回答 1

1

事实证明 nginx 实际上并没有剥离任何东西。仪表显示If-Modified-Since控制器已收到该信息。Rails#stale?收到一个包含错误结果的请求,这导致了一个nil争论,默默地吞下了它,随后忽略了与 的比较和If-Modified-Since定位。Last-Modifiednil

于 2012-05-29T08:36:36.767 回答