静态图片托管在七牛,想实现200 ok (from cache) 而不是 304 not modified 有什么办法移除ETag么? 如果移除Etag响应,浏览器应该就不会再向服务器发送请求确认了,直接就是读缓存。
200 from cache 的首要触发条件是图片需要嵌入在html页面中,同时不是刷新页面(而是直接在页面中跳转 或者 浏览器重新键入页面地址),如果使用 ctrl(cmd)+R 或者 F5 进行强制刷新,那么无论是什么网站,那么图片的请求都会是 304,如果是 ctrl(cmd)+shift+R 那么都会是 200 的重新请求; 所以只要在页面中跳转,或者在地址栏重新键入地址,那么大量的资源请求,都会被浏览器主动拦截,请求状态码为 200 from cache,其中 200 from cache 和之前的 304 请求的请求头部信息并没有实质的改变; 当使用 F5 等方式刷新后,taobao仍然有部分的图片可以是 200 from cache,这部分图片的请求的 initiator 基本是 js 或者 css,并不是直接嵌入在html页面中,而是通过 js 或者 css 进行加载,具体加载方式由于 taobao中该部分图片的引用方式被隐藏,所以并不好确定他们的优化方式; 查看了taobao的kissy框架,也看了前端对 200 from cache 和 304 区别的文章,同时也反复看了 HTTP RFC 中,关于 cache-control 头部和 expires 头部的描述,能够发现的事,本质上这 200 from cache 这种客户端对请求的拦截行为,是前端设计的优化行为,和服务端头部关系并不是很大,从第1点和第2点可以看出,另外http://www.zhihu.com/question/20790576这篇文章中也简单说了下具体怎么设计前端页面才能保证 200 from cache;
200 from cache 的首要触发条件是图片需要嵌入在html页面中,同时不是刷新页面(而是直接在页面中跳转 或者 浏览器重新键入页面地址),如果使用 ctrl(cmd)+R 或者 F5 进行强制刷新,那么无论是什么网站,那么图片的请求都会是 304,如果是 ctrl(cmd)+shift+R 那么都会是 200 的重新请求;
所以只要在页面中跳转,或者在地址栏重新键入地址,那么大量的资源请求,都会被浏览器主动拦截,请求状态码为 200 from cache,其中 200 from cache 和之前的 304 请求的请求头部信息并没有实质的改变;
当使用 F5 等方式刷新后,taobao仍然有部分的图片可以是 200 from cache,这部分图片的请求的 initiator 基本是 js 或者 css,并不是直接嵌入在html页面中,而是通过 js 或者 css 进行加载,具体加载方式由于 taobao中该部分图片的引用方式被隐藏,所以并不好确定他们的优化方式;
查看了taobao的kissy框架,也看了前端对 200 from cache 和 304 区别的文章,同时也反复看了 HTTP RFC 中,关于 cache-control 头部和 expires 头部的描述,能够发现的事,本质上这 200 from cache 这种客户端对请求的拦截行为,是前端设计的优化行为,和服务端头部关系并不是很大,从第1点和第2点可以看出,另外http://www.zhihu.com/question/20790576这篇文章中也简单说了下具体怎么设计前端页面才能保证 200 from cache;