Мы обнаружили, что Firefox (по крайней мере v3) и Safari неправильно кэшируют изображения, на которые ссылается файл CSS. Изображения кэшируются, но они никогда не обновляются, даже если вы меняете их на сервере. Как только Firefox поместит изображение в кэш, он никогда не проверит, изменилось ли оно.
Наш файл CSS выглядит следующим образом:
div#news {
background: #FFFFFF url(images/newsitem_background.jpg) no-repeat;
...
}
Проблема в том, что если мы теперь изменим изображение newsitem_background.jpg, все пользователи Firefox по-прежнему получат старое изображение, если они не обновят страницу явно. IE, с другой стороны, обнаруживает, что изображение изменилось, и автоматически загружает его.
Это известная проблема? Есть обходные пути? Спасибо!
РЕДАКТИРОВАТЬ: Решение не состоит в том, чтобы нажать F5. Я могу сделать это. Но наши клиенты просто зайдут на наш веб-сайт и получат старую устаревшую графику. Как они узнали бы, что им нужно нажать F5?
Я установил Firebug и подтвердил то, что уже подозревал: Firefox просто даже не пытается извлечь изображения, на которые есть ссылки из файла css, чтобы узнать, были ли они изменены. Когда вы нажимаете F5, он проверяет все изображения, и веб-сервер приятно отвечает 304, за исключением тех, которые изменили , где он отвечает 200 OK.
Итак, есть ли способ заставить Firefox автоматически обновить изображение, на которое ссылается файл CSS? Неужели я не единственный с этой проблемой?
EDIT2: я проверил это с помощью localhost, и ответ изображения не содержит никакой информации о кешировании, это:
Server Microsoft-IIS/5.1
X-Powered-By ASP.NET
Date Tue, 14 Oct 2008 11:01:27 GMT
Content-Type image/jpeg
Accept-Ranges bytes
Last-Modified Tue, 14 Oct 2008 11:00:43 GMT
Etag "7ab3aa1aec2dc91:9f4"
Content-Length 61196
EDIT3: я прочел еще кое-что и похоже, что это просто невозможно исправить, поскольку Firefox или большинство браузеров просто предполагают, что изображение меняется не очень часто (истекает заголовок и все).