首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails 3.2 / nginx / phusion passanger响应头中缺少的电子标签

rails 3.2 / nginx / phusion passanger响应头中缺少的电子标签
EN

Stack Overflow用户
提问于 2013-06-27 18:42:47
回答 2查看 963关注 0票数 4

我有一个非常简单的电子标签控制器:

代码语言:javascript
复制
class EtagsController < ApplicationController
  before_filter :require_user

  def index
    if stale?(:etag => current_user)
      render :layout => false
    end
  end

end

当我在本地开发环境中运行这个程序时,第一个请求是响应中带有ETag的200。第二个请求提交回ETag,我得到一个预期的304个响应。

但是,当这在我的暂存或生产环境中执行时,响应中没有ETag。

下面是我的暂存环境中的请求和响应头:

代码语言:javascript
复制
Request URL: /etags
Request Method:GET
Status Code:200 OK

Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:__utma=169165539.1455374302.1372358226.1372358226.1372358226.1; __utmb=169165539.1.10.1372358226; __utmc=169165539; __utmz=169165539.1372358226.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); user_credentials=4ffa15df84112d22434f121eed06c59a5c32cb9ab72cf6bf1e952a3993201b5dec2917a028d20d4b63c70a84c6a290c4d5c4673ce967efec6f139c161850bc37%3A%3A101; _session_id=d21671b70349653406442ee0716633b2
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36

Response Headers
Cache-Control:must-revalidate, private, max-age=0
Connection:keep-alive
Content-Encoding:gzip
Content-Length:65
Content-Type:text/html; charset=utf-8
Date:Thu, 27 Jun 2013 18:37:10 GMT
Server:nginx/1.4.1 + Phusion Passenger 3.0.19
Status:200
X-Powered-By:Phusion Passenger (mod_rails/mod_rack) 3.0.19
X-Rack-Cache:miss
X-Request-Id:620c1ab99a1af7b6dde62cee77fc59fe
X-Runtime:0.205884
X-UA-Compatible:IE=Edge,chrome=1

我很困惑。为什么我的暂存环境不尊重我的控制器中的ETag?

所涉及的技术:

  1. 乘客3.0.19
  2. nginx 1.4.1
  3. Rails 3.2.13

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-08 15:02:40

如果为nginx启用gzip,那么nginx > 1.3将忽略应用服务器上的电子标签。我们没有在nginx中找到一种解决方案,使我们能够通过应用服务器的电子标签并将响应压缩到gzip。我相信弱的电子标签可能对此有用,但nginx目前不支持它们。

票数 4
EN

Stack Overflow用户

发布于 2014-05-09 18:30:34

Nginx仍然没有对脆弱的etags的支持。也许在1.7.x中:

http://forum.nginx.org/read.php?29,249380,249740#msg-249740

这个答案提供了一种让您的中间件从强到弱的etags转换的方法:

Weak ETAGs in Rails?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17350884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档