Что может привести к тому, что CSS время от времени не загружается во всех браузерах?
Вопрос
Я работаю над веб-приложением, и время от времени мы сталкиваемся с ситуациями, когда страницы загружаются без применения CSS.Эта проблема обнаружилась в IE6, IE7, Safari 3 и FF3.
Обновление страницы всегда устранит проблему.
Загружено 3 CSS-файла, все в одном блоке стиля с использованием @import:
<STYLE type="text/css">
@import url([base css file]);
@import url([skin css file]);
@import url([generated css path]);
</STYLE>
В любой ситуации, когда мы тратим время на изучение исходного кода html, нет ничего необычного.Журналы доступа также кажутся нормальными - мы получаем ответы HTTP 304 для статических файлов CSS всякий раз, когда они запрашиваются, и ответ HTTP 200 для нашего сгенерированного CSS.
Mimetype - это text / css для файлов css и сгенерированного css.Мы используем сервер iPlanet, который пересылает запросы на сервер Tomcat.
спросил дейвбаг:
Всегда ли не загружается один и тот же css-файл, или проблема во всех них, равномерно?
Ни один из CSS-файлов не загружается.Любые стили, определенные в HTML, работают нормально, но ни в одном из CSS-файлов ничего не работает, когда это происходит.
Решение
У меня случалась похожая ситуация, которую я смог исправить, сначала включив базовую таблицу стилей, используя метод "link rel", а не "@import".т. е.переместите ваше включение [базового css-файла] в:
<link rel="stylesheet" href="[base css file]" type="text/css" media="screen" />
и поставьте это перед остальными.
Другие советы
если это происходит достаточно часто, чтобы вы могли видеть это в своем браузере, попробуйте установить расширение Firefox Live http headers или расширение Tamper Data и следите за заголовками ответов в том виде, в каком они отображаются браузером.
Я не знаю почему, но в моем случае, если страница загружается из действия с таким путем, как /ActionName
, Я вижу эту проблему.
Но если я изменю его (например) на /reservedArea/ActionName
или /aPath/ActionName
это работает :/
Это безумие...
Изучение заголовков - хорошая идея, но я полагаю, все, что вы узнаете из них, - это то, что сервер время от времени не отвечал на запрос.
Я постоянно вижу, как это происходит в сети.Изображения не будут загружаться до тех пор, пока вы не обновите их, css испорчен и т.д.Все эти ситуации решаются с помощью обновления.
Я полагаю, что один из способов, которым вы могли бы "исправить" это, возможно, - указать в вашем cs-файле URL-адрес изображения для некоторого элемента.Затем, при загрузке страницы в javascript, получите этот элемент и посмотрите, загрузилось ли это изображение.Если нет, то попросите страницу перезагрузить саму себя.
Кажется довольно экзотичным, но это единственная идея, которая пришла мне в голову...
Используйте ab, или httperf, или curl, или что-то еще, чтобы повторно загружать CSS-файлы с веб-сервера.Возможно, это не приводит к постоянному обслуживанию страниц.