Firefox & IE: поврежденные данные при извлечении из кеша - PullRequest
3 голосов
/ 03 марта 2011

У меня есть запрос к серверу, который выглядит так:

http://localhost/Combine.aspx/flag/file1.js,file2.js,file3.js

Я также пробовал это:

http://localhost/Combine.aspx/flag/value/file1.js/file2.js/file3.js

Он просто объединяет три файла, которые ему дали: это прекрасно работает.

По первому запросу Firefox страница отображается правильно. Когда страница обновляется снова, содержимое выглядит следующим образом:

��������`I�%&/m�{J�J��t��`$�����iG#)�*��eVe]f@�흼��{���{��;�N'

В этом случае нет запроса на сервер, файл, насколько я могу судить, извлекается только из кэша Firefox.

Если я принудительно обновлю страницу с помощью Control-F5, страница снова будет выглядеть нормально.

Вот запрос и ответ (в firebug) с Control-F5 (работает):

Ответ

Cache-Control   public
Content-Type    application/javascript; charset=utf-8
Content-Encoding    gzip
Expires Sun, 26 Feb 2012 02:57:26 GMT
Last-Modified   Fri, 07 Jan 2011 21:08:54 GMT
Etag    CLYvZwbFmainWEMi8h-6x-zNEIQ1
Vary    Accept-Encoding
Server  Microsoft-IIS/7.5
Set-Cookie  auth=longstring; path=/
X-AspNet-Version    2.0.50727
X-Powered-By    ASP.NET
Date    Thu, 03 Mar 2011 02:57:26 GMT
Content-Length  918

Запрос

Host    localhost
User-Agent  Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Cookie  auth=longstring
Pragma  no-cache
Cache-Control   no-cache

Вот то же самое с , просто F5 (не работает):

Ответ

Cache-Control   public
Content-Type    application/javascript; charset=utf-8
Content-Encoding    gzip
Expires Sun, 26 Feb 2012 02:57:26 GMT
Last-Modified   Fri, 07 Jan 2011 21:08:54 GMT
Etag    CLYvZwbFmainWEMi8h-6x-zNEIQ1
Vary    Accept-Encoding
Server  Microsoft-IIS/7.5
X-AspNet-Version    2.0.50727
X-Powered-By    ASP.NET
Date    Thu, 03 Mar 2011 03:01:31 GMT
Content-Length  1533

Запрос

Host    localhost
User-Agent  Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Cookie  auth=longstring

Единственное, что я могу сказать, это другое - это Content-Length (который, вероятно, вызывает повреждение), но, поскольку он никогда не попадает на сервер, я не могу его контролировать.

Что может быть причиной этого?

Edit:

Это также происходит в IE8, но вместо просмотра поврежденного файла он загружает поврежденный файл. На сервер никогда не поступает никаких запросов (установите точку останова в visual studio).

Что касается chrome, то при просмотре URL-адреса запрос к серверу выполняется каждый раз, и он работает каждый раз. Я полагаю, однако, что если бы он был включен в тег, он бы вел себя подобно Firefox.

О, а также:

Если я отключаю заголовок Expires (который является одним из флагов в URL), все работает нормально .

Редактировать 2:

Мне удалось обойти эту проблему, не отправив оба заголовок Expires и ETag, только один или другой. Я не имею ни малейшего понятия, почему заголовок ETag может вызвать такое повреждение.

1 Ответ

0 голосов
/ 11 апреля 2013

Это из-за вашей конфигурации IIS. Настройте IIS как ASP 4.0 Classic, а не пул приложений по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...