Подтвердить что ты не робот

304 не изменен на статические файлы

После перемещения проекта на рабочий сервер я обнаружил, что статические файлы, такие как изображения, не будут возвращаться со статусом "304 не изменен", хотя есть заголовки кеша, такие как "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

Заголовки ответов

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

В локальном "IIS express" все работает правильно.

Локальные заголовки ответов

HTTP/1.1 304 Not Modified
Cache-Control:public
Date:Mon, 07 Sep 2015 14:38:12 GMT
Etag:"1D04A9052E17E00"

Подскажите, в чем может быть причина?

Файлы Web.config идентичны.

Спасибо!

UPD 1:

chrome network console chrome request

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

Но удаленный (производственный) кэш кеша сервера пуст

C:\Users\Администратор>netsh http show cachestate

Snapshot cache HTTP responses:
--------------------------------
The cache contains entries that match the specified URL-address
4b9b3361

Ответ 1

Обратитесь к ссылке ниже и включите кеш вручную для типа содержимого на основе вашего требования и посмотрите, работает ли его или нет.

https://www.iis.net/configreference/system.webserver/caching

Ответ 2

Из того, что я понимаю, код состояния 304 означает, что сервер сообщает браузеру: "Эй, изображение, которое вы запрашиваете, не было изменено с тех пор, как xxxx/xx/xx, используйте ваш локальный кеш, должно быть хорошо!". Таким образом, несоответствие между вашей машиной разработки и производственным сервером, скорее всего, вызвано настройкой IIS на рабочем сервере.

Теперь вы можете попробовать:

  • Сделайте "жесткую перезагрузку" на своей веб-странице в своем веб-браузере (в Chrome вы можете включить "инструмент разработчика" щелчком F12, а затем щелкнуть правой кнопкой мыши по кнопке "перезагрузить", это даст вам "пустой кеш" и жесткая перезагрузка "
  • На вашей машине разработки попробуйте установить IIS вместо IIS express и запустить веб-приложение в IIS. Возможно, существует некорректное расхождение по умолчанию между IIS express на ваш производственный сервер IIS, поэтому попробуйте имитировать среду рабочего сервера на вашей машине разработки.
  • Попробуйте явно отключить кеш IIS. Вы можете найти, как это сделать здесь https://serverfault.com/info/117970/iis-7-returns-304-instead-of-200

Надеюсь, это поможет! Генри