2015-09-07 9 views
24

Po przeniesieniu projektu na serwer produkcyjny okazało się, że statyczne pliki, takie jak obrazy, nie będą zwracane ze statusem "304 niezmodyfikowanym", chociaż istnieją nagłówki pamięci podręcznej, takie jak "Ostatnia modyfikacja" "i" Wygasa ".304 niezmodyfikowane w plikach statycznych

Żądanie Główki

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 

nagłówki odpowiedzi

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 

w lokalnym "IIS wyrażenia" wszystko działa poprawnie.

lokalne nagłówki odpowiedzi

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

Prompt, w co może być przyczyną?

Pliki Web.config są identyczne.

Dzięki!

UPD 1:

chrome network console chrome request

UPD 2:

lokalny cache snapshot maszyna zwraca zdjęć

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 

Ale zdalnego (produkcja) ser ver cache snapshot jest pusty

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

Snapshot cache HTTP responses: 
-------------------------------- 
The cache contains entries that match the specified URL-address 
+2

Ciekawy że nagłówki życzenie to 'Pragma: no-cache'. Czy w ustawieniach przeglądarki wyłączona jest pamięć podręczna, gdy narzędzia programistyczne są otwarte? –

+0

@ChrisCurtis, dziękuję za odpowiedź, 'Pragma: no-cache' nie wpływa na odpowiedź. Aktualizuję tekst pytania i dodam kilka zrzutów ekranu. –

+0

Czy plik web.config jest taki sam? Czy statyczna pamięć podręczna jest wyłączona na serwerze produkcyjnym? Jest w tym wiele zmiennych, w idealnym przypadku wygaśnięcie Static Content musi być włączone na poziomie IIS lub na web.config –

Odpowiedz

-1

Z tego co rozumiem, kod statusu 304 oznacza, że ​​serwer informuje przeglądarkę, „Hej, obraz żądasz nie została zmieniona od xxxx/xx/xx, użyj lokalnej pamięć podręczna powinna być w porządku! ". Tak więc rozbieżność między maszyną programującą a serwerem produkcyjnym jest najprawdopodobniej spowodowana ustawieniem serwera IIS w środowisku produkcyjnym.

Co można spróbować na teraz to:

  • zrobienia „twardą reload” na swojej stronie internetowej w przeglądarce internetowej (w chromie, można włączyć „narzędzie programisty” poprzez kliknięcie F12, a następnie w prawo kliknij przycisk "przeładuj", dostaniesz opcję "pustego bufora podręcznego i twardego przeładowania" "
  • Na komputerze deweloperskim spróbuj zainstalować IIS zamiast IIS express i uruchom swoją aplikację internetową w IIS. domyślne rozbieżności ustawień między wyrażeniem IIS Express a serwerem produkcyjnym IIS, więc spróbuj naśladować środowisko serwera produkcyjnego na komputerze programisty
  • Spróbuj wyraźnie wyłączyć pamięć podręczną IIS. Tutaj dowiesz się, jak to zrobić: https://serverfault.com/questions/117970/iis-7-returns-304-instead-of-200

Mam nadzieję, że to pomoże! Henry