У меня была такая же проблема несколько месяцев с Firefox в Linux (то есть при перезагрузке и очистке кэша, но только на одной из двух одинаково установленных машин). Сайт выглядел как голый html (без применения каких-либо стилей), и такие вещи, как кнопки голосования, не работали.
Краткий ответ: в моем случае проблема заключалась в том, что для параметра Firefox network.http.accept-encoding
(в about:config
) было задано пустое значение. Сброс его к значению по умолчанию
gzip, deflate
заставляет Stackoverflow работать снова.
Более длинный ответ:
Я видел проблему даже с -safe-mode (то есть со всеми отключенными расширениями). Глядя на консоль ошибок, Firefox жалуется на «недопустимый символ» в данных http://cdn.sstatic.net/js/stub.js?v=f3ba9bf843c1 . Это , кажется, со сжатым файлом JavaScript (загружал его вручную и побежал file
на нем) и по какой - то причине , Firefox , кажется, интерпретировать его без расстегивать его. Тогда есть последовательные ошибки javascript о неизвестных символах (которые определены в этом сжатом файле javascript).
Глядя на HTTP-трафик, можно увидеть (с моей оригинальной, проблемной настройкой):
Запрос:
GET /js/stub.js?v=f3ba9bf843c1 HTTP/1.1
Host: cdn.sstatic.net
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://stackoverflow.com/
Обратите внимание, что нет поля Accept-Encoding
указывающего, что Firefox готов принять данные в сжатом виде.
HTTP ответ на это:
HTTP/1.1 200 OK
Server: nginx/0.8.36
Date: Sat, 25 Jun 2011 16:53:21 GMT
Content-Type: application/x-javascript
Connection: keep-alive
Cache-Control: max-age=604800
Content-Encoding: gzip
Last-Modified: Fri, 24 Jun 2011 13:33:57 GMT
ETag: "64cd5e5e7332cc1:0"
Vary: Accept-Encoding
Content-Length: 6464
X-Cache: HIT
Accept-Ranges: bytes
поэтому сервер nginx отвечает полем Content-Encoding
установленным в gzip
, игнорируя возможности клиентов. Я не уверен, но это выглядит для меня как нарушение на стороне сервера.
После установки для параметра Firefox network.http.accept-encoding
его заводского значения связь http для вышеуказанного файла javascript выглядит следующим образом:
Запрос:
GET /js/stub.js?v=f3ba9bf843c1 HTTP/1.1
Host: cdn.sstatic.net
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: */*
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
Connection: keep-alive
Referer: http://stackoverflow.com/
Теперь Firefox сообщает серверу, что он принимает сжатые данные.
Отклик:
HTTP/1.1 200 OK
Server: nginx/0.8.36
Date: Sat, 25 Jun 2011 17:02:08 GMT
Content-Type: application/x-javascript
Connection: keep-alive
Cache-Control: max-age=604800
Content-Encoding: gzip
Last-Modified: Fri, 24 Jun 2011 13:33:57 GMT
ETag: "64cd5e5e7332cc1:0"
Vary: Accept-Encoding
Content-Length: 6464
X-Cache: HIT
Accept-Ranges: bytes