我在通过 https 在 IE 上使用 etags 缓存内容时遇到问题。
Chrome 和 Firefox 允许我使用以下组合成功缓存内容
If-Modified-Since
和
If-None-Match
If-None-Match 标头很重要,因为可能以两种不同的方式查看同一页面,这将生成不同的 etag。
这非常有效,除非我在 https 上使用 IE(我尝试过 IE9 和 10)。在这种情况下,它会删除 if-none-match 标头,但不会删除 if-modified-since 标头。这是一个问题,因为现在它为两种不同的查看方式显示相同的缓存内容,因为修改后的时间戳和 url 都匹配。
SSL 证书是有效的,我已经阅读过它可能会导致问题,并且它在 FF 和 Chrome 中都可以使用。有没有办法来解决这个问题?
这是我在 Chrome、IE (http) 和 IE (https) 中的标题。
请注意,IE (https) 中缺少 If-None-Match 标头。如果问题出在服务器响应上,我已经包含了请求和响应。我已经更改了 url 和服务器名称。
Chrome - https(按预期工作)
GET /events/1618 HTTP/1.1
Host: test.co.uk
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
Referer: http://test.co.uk/events/1618
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: auth_token=2397dd7dc6ce88ab66fc8efc4150f60232f977f3; _auction_session=BAh7CUkiD3Nlc3Npb25faWQGOgZFVEkiJTY4ZjdiMTQxYmEzMjJiZjUwNjc1MmQ2M2FjZTM5MDI wBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMTlkS3JKLzRLbE5Sd1V1Q2QxUkFlUWI0bjhwMFo1RlRqMDkwMDR4SnNESUE9BjsARkkiDHVzZXJfaWQGOwBGaQJgBUkiD2luX3NhbmRwaXQGOwBGSSIJdHJ1ZQY7AFQ%3D--c54fabd39a2678f2cdee6f76d9812dda331dbf61; locale=en-uk
If-None-Match: "327fd750ae149bd0589dc13bea9c48f2"
If-Modified-Since: Fri, 21 Mar 2014 08:35:50 GMT
HTTP/1.1 304 Not Modified
Date: Fri, 21 Mar 2014 14:05:03 GMT
Server: Apache/2.2.3 (CentOS)
Connection: close
ETag: "ba4788d17893e6ff2593af9e360db7cc"
Cache-Control: must-revalidate, private, max-age=0
Set-Cookie: locale=en-uk; path=/; expires=Sat, 21-Mar-2015 14:05:03 GMT
IE - http(按预期工作)
Request GET /events/1618 HTTP/1.1
Accept text/html, application/xhtml+xml, */*
Referer http://test.co.uk/events/1618
Accept-Language en-GB
User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
Accept-Encoding gzip, deflate
Host test.co.uk
If-Modified-Since Fri, 21 Mar 2014 08:35:50 GMT
If-None-Match "327fd750ae149bd0589dc13bea9c48f2"
DNT 1
Connection Keep-Alive
Cookie locale=en-uk; auth_token=2397dd7dc6ce88ab66fc8efc4150f60232f977f3; _auction_session=BAh7CkkiD3Nlc3Npb25faWQGOgZFVEkiJTIxMzRhMTQwYzZhNjU4ZTE2NGY5Y2Y4ZGNjZjVhN2I 3BjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXFReklPK3oxNEZSUUEwa3AyeFZLY3REVkJCMDI4U3UwVnlYNlJnSFZGakE9BjsARkkiDHVzZXJfaWQGOwBGaQJgBUkiD2luX3NhbmRwaXQGOwBGSSIJdHJ1ZQY7AFRJIhdpbl9zYW5kcGl0X2FzX3VzZXIGOwBGSSIJMTM0MQY7AFQ%3D--91e307c63096e1cc96f265d457480707021b25dc
Response HTTP/1.1 304 Not Modified
ETag "327fd750ae149bd0589dc13bea9c48f2"
X-Request-Id 16ab60d75b2bedcad96a182423771e63
X-Runtime 0.983268
X-Rack-Cache miss
X-Powered-By Phusion Passenger 4.0.37
Content-Length 21788
Status 200 OK
Content-Type text/html; charset=utf-8
Expires Fri, 21 Mar 2014 13:06:23 GMT
Last-Modified Fri, 21 Mar 2014 08:35:50 GMT
IE - https(未按预期工作)
Request GET /events/1618 HTTP/1.1
Accept text/html, application/xhtml+xml, */*
Accept-Language en-GB
User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
Accept-Encoding gzip, deflate
Host test.co.uk
If-Modified-Since Fri, 21 Mar 2014 08:35:50 GMT; length=26501
DNT 1
Connection Keep-Alive
Cookie locale=en-uk; auth_token=2397dd7dc6ce88ab66fc8efc4150f60232f977f3; _auction_session=BAh7CkkiD3Nlc3Npb25faWQGOgZFVEkiJTIxMzRhMTQwYzZhNjU4ZTE2NGY5Y2Y4ZGNjZjVhN2I3BjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXFReklPK3oxNEZSUUEwa3AyeFZLY3REVkJCMDI4U3UwVnlYNlJnSFZGakE9BjsARkkiDHVzZXJfaWQGOwBGaQJgBUkiD2luX3NhbmRwaXQGOwBGSSIJdHJ1ZQY7AFRJIhdpbl9zYW5kcGl0X2FzX3VzZXIGOwBGSSIJMTM0MQY7AFQ%3D--91e307c63096e1cc96f265d457480707021b25dc
Response HTTP/1.1 304 Not Modified
ETag "327fd750ae149bd0589dc13bea9c48f2"
X-Request-Id 25aab65eb6028c521622e86d8d716226
X-Runtime 0.406167
X-Rack-Cache miss
X-Powered-By Phusion Passenger 4.0.37
Content-Length 26501
Status 200 OK
Content-Type text/html; charset=utf-8
Expires Fri, 21 Mar 2014 13:14:02 GMT
Last-Modified Fri, 21 Mar 2014 08:35:50 GMT
我将非常感谢任何建议。