Войти
ПрограммированиеФорумВеб

Google Chrome любит загружать уже загруженные картинки?

#0
1:37, 22 дек. 2012

У меня в проекте есть

<div id=stor>
элемент, в который я загружаю историю боя(в ней в том числе и картинки).
И все бы хорошо, но при выполнении кода типа:
stor.innerHTML+=*новые строчки истории*;
Google Chrome почему то заново загружает с сервера некоторые изображения(из этого дива), в результате чего они мигают в игре.
Пробовал чистить кэш - результата ноль.
Никто не знает, в чем тут может быть заковырка? У других браузеров подобного не наблюдал.


#1
7:49, 22 дек. 2012

В чём заковырка не знаю, но если добавляемых записей немного, могу предложить решение

<div id="stor0">
  Запись 0
  <div id="stor1">
    Запись 1
    <div id="stor2"></stor>
  </div>
</div>

При записи добавлять пустой div с id = stor+(++current_index).

P.S. Не сразу подумал - на сервере можно через .htaccess явным образом включить кэширование нужных картинок.

#2
13:15, 22 дек. 2012

ALPINE
>В чём заковырка не знаю, но если добавляемых записей немного, могу предложить решение
Нет, они могут добавляться бесконечно.

Мне просто непонятно поведение браузера.
К примеру в элементе код:

<div id=stor>
<div>Крофтикус<картинка1> бьет Гульман<картинка2> на 1</div>
<div>Гульман<картинка2> в панике убегает</div>
<div>Свиборг<картинка3> с любопытством наблюдает за Гульманом</div>
</div>
Я выполняю код
stor.innerHTML+='';   
И <картинка2> заново загружается с сервера0_0.

>P.S. Не сразу подумал - на сервере можно через .htaccess явным образом включить кэширование нужных картинок.
Да, наверное это бы помогло. Кстати пока я спал, браузер решил удивить меня еще сильнее, неожиданно прекрасно заработав>_<.

#3
16:48, 22 дек. 2012
Крофтикус
Любители HTML5 - привыкайте. Мы когда делали веб-приложение словили НЕХИЛЫЕ тормоза. Вроде, и ничего не делали даже. Пробовали откатываться и всё такое - не помогает. Тормоза просто нестерпимые - продукт испорчен. К вечеру хром апдейтнулся и всё заработало опять. Просто потеряли рабочий день, а начальник, видимо, еще и пару кирпичей.
#4
17:52, 22 дек. 2012

Крофтикус
> stor.innerHTML+=*новые строчки истории*;
Я не спец по html, но насколько я знаю, так делать плохо. После этого браузер может перепарсить весь innerHTML. Судя по вашим тестам не все браузеры оптимизируют этот процесс. Используйте нормальный DOM.

#5
21:16, 22 дек. 2012

Крофтикус
> К примеру в элементе код:
Дай пример картинки, в html коде.

Крофтикус
> Google Chrome почему то заново загружает с сервера некоторые изображения
у него вообще кеш странный. В заголовке на отдачу картинки включи насильное кеширование должно решить проблему.

#6
1:59, 23 дек. 2012

}:+()___ [Smile]
>Я не спец по html, но насколько я знаю, так делать плохо. После этого браузер может перепарсить весь innerHTML. Судя по вашим тестам не все браузеры оптимизируют этот >процесс. Используйте нормальный DOM.
Видимо надо, просто я подумал - "зачем кодить больше, если выглядит одинаково"=).

Mephistopheles
>Дай пример картинки, в html коде.
Изображение
>у него вообще кеш странный. В заголовке на отдачу картинки включи насильное кеширование должно решить проблему.
Да уже советовали, просто так как баг исчез, я не могу проверить результат.

#7
5:00, 26 дек. 2012

Как сказал }:+()___ [Smile] так делать нельзя.
Вы может где-то не избегали html кода в сообщениях, которые ломали DOM, например лишний не закрытый или закрывающий элемент. Следственно это заставляло перерисовывать весь DOM в памяти Chrome'а.
В jQuery используйте .append(), в простом DOM, .appendChild.

Также картинки будут кешиться и очень жёстко, вставлять их таким образом - крайне не рекомендуется, это в разы медленее чем ручками создать DocumentFragment, в него за'append'ить также новенькие element'ы, и затем уже его append'ить в контейнер элемент.

petya-kurochkin
Толсто..

#8
10:20, 26 дек. 2012

petya-kurochkin
> Любители HTML5 - привыкайте.
  А при чём здесь HTML5 вообще? Если для вас innerHTML это не говно мамонта, то могу сообщить плохие новости :) Даже я, далёкий от веба человек, понимаю, что править HTML на лету это всё равно что компилировать программу во время выполнения и жаловаться на тормоза.

ПрограммированиеФорумВеб

Тема в архиве.