У меня есть запрос к серверу, который выглядит так:
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 может вызвать такое повреждение.