2015-10-29 30 views
0

我遇到了一個奇怪的問題,我正在用盡想法。在我的Rails(4.2)-app我使用fresh_when - 方法無效客戶端緩存爲我的博客網頁:在Chrome/Safari中獲得304響應,但通過curl

def show 
    @post = Post.find(params[:id]) 
    fresh_when @post 
end 

,捲曲一切順利罰款,發送匹配的Etag給我一個304的迴應:

celmare$ curl -i -H 'If-None-Match: "3b4dd96aac692c03ce623db459c9cef2"' https://grosse.io/blog 

響應:

HTTP/1.1 304 Not Modified 
Connection: keep-alive 
Status: 304 Not Modified 
Last-Modified: Sun, 04 Oct 2015 10:41:08 GMT 
Cache-Control: max-age=0, private, must-revalidate 
Strict-Transport-Security: max-age=31536000 
X-XSS-Protection: 1; mode=block 
X-Request-Id: 68a0ecd2-3fac-4004-ac1e-fd6d14780f61 
ETag: "3b4dd96aac692c03ce623db459c9cef2" 
X-Frame-Options: SAMEORIGIN 
X-Runtime: 0.006207 
X-Content-Type-Options: nosniff 
Date: Thu, 29 Oct 2015 13:17:02 GMT 
X-Powered-By: Phusion Passenger 5.0.15 
Server: nginx/1.8.0 + Phusion Passenger 5.0.15 

當我在瀏覽器中打開的頁面(如Chrome瀏覽器版本47.0.2526.35測試版(64位)),我總是得到200雖然仍Etag的matche S:

請求頭:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 
Connection:keep-alive 
Cookie:_gat=1; _syscfg_net_v2_session=eGFlYk83Z0kwUE9IYmtUVHg1Z1ppbHF2eFBrUitiTDBsRG1Kbml2bW8vQVZ6YW4xM0ZuRTNOS0w2VmVLM1ZaN0czZno3N0Y2MWpiUWNjQUV0YkVlaXhCZUJyZlJWWEVIZVpPclFaaHZxdFNncjNBVVg3MFR2SE0yWDRUaklsSlRMbmw4OVQrQmlDRHBIbmRSMS9VVml3PT0tLTYvUGdURTRaRjNXSU9WOTdOY1F3OEE9PQ%3D%3D--3bafbda7d522c61cd9fd04898c2c6a4bac06131b; _ga=GA1.2.235147781.1445350582 
Host:grosse.io 
If-Modified-Since:Sun, 04 Oct 2015 10:41:08 GMT 
If-None-Match:W/"3b4dd96aac692c03ce623db459c9cef2" 
Referer:https://grosse.io/blog 
Upgrade-Insecure-Requests:1 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.35 Safari/537.36 

響應頭:

Cache-Control:max-age=0, private, must-revalidate 
Connection:keep-alive 
Content-Encoding:gzip 
Content-Type:text/html; charset=utf-8 
Date:Thu, 29 Oct 2015 13:16:48 GMT 
ETag:W/"3b4dd96aac692c03ce623db459c9cef2" 
Last-Modified:Sun, 04 Oct 2015 10:41:08 GMT 
Server:nginx/1.8.0 + Phusion Passenger 5.0.15 
Set-Cookie:_syscfg_net_v2_session=MUtjWlQyY1ZFZnF2TzlvTDJkdnpmMDhqVmhoVld5YkJDdHl5NUtIdXJTY1VZQ1AzV1NVMjF1alFDSE9NKzliOGhzcmc4S3FLajRmNGFZUjltQzdPNDg4SW51aUxGU2xDd0FxVi82UFZneE5YU1FnTjJVSFhpL3RCQkNYdjlFVTlyZVRRU0ZPdG83UFNVbjVyckJmZ0R3PT0tLXh4Zzg0cjhBSTZKbVpkayttanpwUFE9PQ%3D%3D--dc404af2428a17085bea4b40a3f4f0fc6ef01e50; path=/; secure; HttpOnly 
Status:200 OK 
Strict-Transport-Security:max-age=31536000 
Transfer-Encoding:chunked 
X-Content-Type-Options:nosniff 
X-Frame-Options:SAMEORIGIN 
X-Powered-By:Phusion Passenger 5.0.15 
X-Request-Id:0633095f-b95d-4339-8e62-8b15683c2d8c 
X-Runtime:0.034172 
X-XSS-Protection:1; mode=block 

和頂部:在我本地的env它的工作與同一個瀏覽器。我很難想象它是一個NGINX的東西,因爲一切都非常默認配置。它可以是HTTPS的東西嗎?

任何想法?提前致謝。

回答

1

好吧,我找到了原因。 NGINXs gzip壓縮與弱「W /」Etags相結合是一個問題。將嘗試升級NGINX或使用補丁。

gzip on;之後加上etag on;在nginx.conf中修復了1.7.4和更新的問題。

相關問題