.net 防止不必要的';如果自'起修改;AmazonS3上的请求和304个响应

.net 防止不必要的';如果自'起修改;AmazonS3上的请求和304个响应,.net,asp.net-mvc,caching,amazon-s3,etag,.net,Asp.net Mvc,Caching,Amazon S3,Etag,我正在使用AWS SDK for.NET上传几个图像。在发出PutObjectRequest之前,我分别为将来的间隔和日期设置了max age和expires头 这是初始映像请求: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-L

我正在使用AWS SDK for.NET上传几个图像。在发出PutObjectRequest之前,我分别为将来的间隔和日期设置了max age和expires头

这是初始映像请求:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:assets.mywebsite.com.s3-us-west-1.amazonaws.com
If-Modified-Since:Sun, 19 Feb 2012 18:36:48 GMT
If-None-Match:"f19920f9367b698451d6c964d3ae714a"
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
下面是S3的响应。它会发回正确的缓存头:

Accept-Ranges:bytes
Cache-Control:public, max-age=31536000
Content-Length:9180
Content-Type:image/jpeg
Date:Sun, 19 Feb 2012 19:16:18 GMT
ETag:"f19920f9367b698451d6c964d3ae714a"
Expires:Sat, 19 Feb 2022 18:36:48 GMT
Last-Modified:Sun, 19 Feb 2012 18:36:48 GMT
Server:AmazonS3
但是,每个后续请求仍然会产生304(而不是来自缓存的200):

请注意,我没有按F5

我已经读到,当您混合使用etag和Expires/Cache控制时,etag通常用于每个请求,而完全忽略缓存。我还读到,没有办法在S3中禁用ETag

我只是想提高速度,降低成本。在我放弃之前,我想我应该问问SO社区

有没有关于如何防止304的想法

更新:


就缓存而言,浏览器似乎变得越来越复杂。正如marcind指出的,这是一个客户端浏览器问题。在其他浏览器和不同场景中进行测试后(即,直接在chrome中加载图像(请求图像url),而不是简单地在网页上查看图像会产生不同的效果)

后续请求的标题是什么?看起来您的客户机可能正在发送一个
,如果在
或类似内容之后进行了修改


更新:因为你的客户正在发送
,如果修改了
,亚马逊做的事情是正确的。这似乎是您的客户的问题。

对不起,我忘了在我的帖子中包含请求。是,如果修改自,则发送,如果不匹配,则发送。
Status Code:304 Not Modified