Будет ли браузер кэшировать фоновое изображение CSS, если оно не используется?
когда у вас есть два правила, как это:
.foo {
background-image: url(foo.gif);
}
.foo {
background-image: url(bar.gif);
}
и <div class='foo'>Foobar</div>
будет ли ваш браузер кэшировать оба, или только тот, который фактически отображается (bar.gif
в данном случае)?
это верно во всех настройках? (правила находятся в разных файлах,!important
применяется к одному и т. д.)
5 ответов
Я предполагаю, что " кэш "здесь означает " предварительная загрузка". Фактическое "кэширование" связано с заголовками expires и тому подобным.
он полностью основан на поведении браузера и на том, что он решает делать. Однако мой опыт заключается в том, что современные браузеры не утруждают себя загрузкой изображения, определенного в файле CSS, если изображение не вызвано.
Это одна из причин, по которой некоторые предпочитают сделать состояние элемента по умолчанию и наведения на одно изображение, а затем использовать background-position
свойство изменения видны. Есть немного больше накладных расходов, но также нет задержки между наведением и отображаемым состоянием наведения, что делает более плавный опыт.
браузер не загружает изображения, когда он читает css, он просто держит их в виду. И когда он начинает рендеринг страницы, он начинает загружать изображения.
поэтому в вашем случае вы уже переопределяете свое правило css, и когда браузер отображает страницу, он игнорирует ваше правило css и, естественно, не загружает ваше первое изображение.
лучше всего, как я могу сказать (с FireBug), он только тянет изображения, которые вы отображаете, а не те, которые определены.
используя tail-f в моем локальном журнале apache, я нашел следующее:
::1 - - [21/Jul/2010:13:28:50 -0700] "GET /test.html HTTP/1.1" 200 127
::1 - - [21/Jul/2010:13:28:50 -0700] "GET /test.css HTTP/1.1" 304 -
::1 - - [21/Jul/2010:13:28:50 -0700] "GET /bar.gif HTTP/1.1" 404 205
используя firefox, браузер только попытался загрузить " bar.gif " (который был 404 не найден, потому что у меня не было этого изображения).
Если вас интересуют другие браузеры, я мог бы проверить их также.
Если оба правила имеют одинаковую спецификацию, то позже будет применяться. подробнее о специфика здесь.