Фоновые изображения HTML - PullRequest
       39

Фоновые изображения HTML

2 голосов
/ 04 декабря 2008

Когда я включаю изображение в качестве тега image, а также фоновое изображение в элемент DOM, браузер иногда делает два запроса на одно и то же изображение. Это также иногда происходит при использовании псевдо-свойства hover. Например:

<html>
<head>
<style>
    div{
        background: transparent url(/img/stuff.png) no-repeat;
    }
    div:hover{
        background: transparent url(/img/stuff.png) no-repeat 25px 0px;
    }
</style>
</head>
<body>
    <img alt="" src="/img/stuff.png"/>
    <div>
    </div>
</body>
</html>

Почему изображение запрашивается дважды (или, возможно, три раза)? Это поведение, которое я могу избежать? Если так, то как?

[EDIT]

Я заметил это, наблюдая за процессом локального сервера Google appengine, поэтому я вполне уверен, что он не был на самом деле кэширован браузером (как могло бы быть, если бы я видел его в Firebug или инспекторе webkit).

Я видел это в Google Chrome, IE7 и Firefox 3.

Ответы [ 5 ]

3 голосов
/ 04 декабря 2008

Это известная проблема с IE6, у вас проблемы с браузером?

Здесь перечислены несколько причин и исправлений:

http://www.fivesevensix.com/studies/ie6flicker/

1 голос
/ 10 февраля 2010

Я видел подобное поведение в своих собственных крупномасштабных веб-приложениях, которые используют большое количество изображений. Даже с предварительной загрузкой JavaScript изображения иногда запрашиваются во второй раз (хотя я не наблюдал достаточно внимательно, чтобы узнать, запрашивались ли они более двух раз.

Я пришел к выводу, что кэш браузера, возможно, был переполнен, и энтропия могла сработать, удалив старые элементы или те, которые в данный момент не используются. Попробуйте увеличить максимальный размер кэша вашего браузера и посмотрите, будет ли оно продолжаться. Также в Firefox вы можете оформить заказ about: cache .

0 голосов
/ 10 февраля 2010

У меня такое же поведение. изображение запрашивается дважды, и у него есть два запроса от сервера, один из файла css в качестве источника запроса, а другой из файла aspx или htm в качестве источника запроса. Я пробовал это с Firebug 1.5 и другими программами HTTPparser.

0 голосов
/ 04 декабря 2008

Ответ зависит от того, как вы обнаружили, что изображение запрашивается более одного раза. Вы смотрите журналы веб-сервера или используете что-то вроде Firebug на стороне клиента? Попробуйте опубликовать более подробную информацию в вашем вопросе.

В любом случае, похоже, что браузер должен получать изображение из кэша.

0 голосов
/ 04 декабря 2008

Мне кажется, это проблема с кэшированием браузера.

Вы можете попробовать предварительно загрузить его так:

<img alt="" src="/img/stuff.png" style="display: none;"/>

но я не уверен, сработает ли это или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...