304未在静态文件上修改

dim*_*ror 25 asp.net iis asp.net-mvc iis-8

将项目移动到生产服务器后,我发现静态文件(如图像)不会返回状态为"304 not modified",尽管有"Last-Modified"和"Expires"等缓存标题.

请求标题

Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2
Cache-Control:max-age=0
Connection:keep-alive
Cookie:_LANG=ru
DNT:1
Host:test.com
If-Modified-Since:Mon, 07 Sep 2015 08:46:37 GMT
If-None-Match:"1D0E949B4DCD480"
Referer:http://test.com/ru/Some/Index/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,     like Gecko) Chrome/45.0.2454.85 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

响应标头

HTTP/1.1 200 OK
Cache-Control: public
Content-Type: image/png
Expires: Tue, 08 Sep 2015 14:33:06 GMT
Last-Modified: Mon, 07 Sep 2015 08:46:37 GMT
Accept-Ranges: bytes
ETag: "1D0E949B4DCD480"
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 07 Sep 2015 14:33:06 GMT
Content-Length: 5953
Run Code Online (Sandbox Code Playgroud)

在本地"IIS快递"一切正常.

本地响应标头

HTTP/1.1 304 Not Modified
Cache-Control:public
Date:Mon, 07 Sep 2015 14:38:12 GMT
Etag:"1D04A9052E17E00"
Run Code Online (Sandbox Code Playgroud)

提示,可能是什么原因?

Web.config文件完全相同.

谢谢!

UPD 1:

chrome网络控制台 镀铬请求

UPD 2:

本地计算机缓存快照返回图像

C:\Users\dev>netsh http show cachestate

Snapshot cache responses HTTP::
--------------------------------

URL-address: http://dev2-pc:1437/Views/CustomMeme/byby/img/header.jpg
Status Code: 200
??????? HTTP: GET
??? ???????? ????: ???? ????? (TTL)
???? ????? ?????? ? ???? (???): 86399
????? ????????: 2015.9.8:12.14.41:0
??? ??????? ????????: Clr4IntegratedAppPool{737BCE3B-FD81-4AB4-B976-A3A8C8A-94D8}
??? ???????????: image/jpeg
????????? ???????????: (null)
????? ??????????: 415
????? ???????????: 49017
????? ?????????: 3
?????????????? ?????????? ????? ????????????: FALSE
Run Code Online (Sandbox Code Playgroud)

但是远程(生产)服务器缓存快照为空

C:\Users\?????????????>netsh http show cachestate

Snapshot cache HTTP responses:
--------------------------------
The cache contains entries that match the specified URL-address
Run Code Online (Sandbox Code Playgroud)

小智 -2

据我了解,状态码304意味着服务器告诉浏览器,“嘿,您请求的图像自xxxx/xx/xx以来没有更改过,使用您的本地缓存应该没问题!”。因此,您的开发计算机和生产服务器之间的差异很可能是由生产服务器 IIS 设置引起的。

您现在可以尝试的是:

  • 在网络浏览器中对网页进行“硬重新加载”(在chrome中,您可以通过单击F12打开“开发人员工具”,然后右键单击“重新加载”按钮,它将给您“清空缓存并硬重新加载” “ 选项”
  • 在您的开发计算机上,尝试安装 IIS 而不是 IIS Express,并在 IIS 中运行您的 Web 应用程序。IIS Express 与生产服务器 IIS 之间可能存在一些默认设置差异,因此请尝试在开发计算机上模拟生产服务器环境
  • 尝试显式禁用 IIS 缓存。您可以在此处找到如何执行此操作https://serverfault.com/questions/117970/iis-7-returns-304-instead-of-200

希望这可以帮助!亨利