我试图让NSURLCache在iOS8上工作,但是在使用ETag和gzip压缩时它似乎被打破了。我正在使用启用了gzip压缩的NGINX作为瘦Web服务器的代理。以下响应未被NSURLCache缓存:
HTTP/1.1 200 OK
Server nginx/1.7.6
Date Thu, 06 Nov 2014 14:28:50 GMT
Content-Type application/json;charset=utf-8
Transfer-Encoding chunked
Connection keep-alive
Vary Accept-Encoding
Cache-Control private, max-age=0
ETag W/"d693ff4d26d0e7f25498ecb89d8796cd41e9da4f"
Content-Encoding gzip
当我在NGINX配置中禁用gzip时,请求被正确缓存:
HTTP/1.1 200 OK
Server nginx/1.7.6
Date Thu, 06 Nov 2014 14:26:40 GMT
Content-Type application/json;charset=utf-8
Content-Length 311433
Connection keep-alive
Cache-Control private, max-age=0
ETag W/"d693ff4d26d0e7f25498ecb89d8796cd41e9da4f"
我尝试将Cache-Control设置为public,但它没有帮助。
启用gzip的我的设置在iOS7上完美运行。
有谁知道我做错了什么?或者我应该为此提交雷达?
提前致谢
答案 0 :(得分:0)
对不起,无法发表评论,缺少声誉。
您可以尝试删除ETag中所有content://com.google.android.apps.docs.storage/
个实例。这就是我的自定义缓存机制的工作方式。实际上,我在寻找一种告诉-gzip
使用gzip ETag的正确方法。感觉就像是一种解决方法。