|
|
|
| вот есть такой план. есть картинка которая повторяется несколько раз на одной странице. как сделать чтобы картинка загружалась один раз а выводилась много.
и еще такой вопросик нельзя ли указать браузеру чтобы он кэшировал только эту картинку.
спасибо огромное всем ответившим | |
|
|
|
|
|
|
|
для: winflip
(21.08.2007 в 16:50)
| | Кешировать и выводить через JS. | |
|
|
|
|
|
|
|
для: sim5
(21.08.2007 в 17:32)
| | ну а как. не могли бы вы привести пример. буду благодарен | |
|
|
|
|
|
|
|
для: winflip
(21.08.2007 в 16:50)
| | выводить так:
<img src="/url/image.jpg" alt=""/>
<img src="/url/image.jpg" alt=""/>
<img src="/url/image.jpg" alt=""/>
<img src="/url/image.jpg" alt=""/>
<img src="/url/image.jpg" alt=""/>
|
| |
|
|
|
|
|
|
|
для: Lelik
(21.08.2007 в 17:49)
| | а что означает слэш? | |
|
|
|
|
|
|
|
для: winflip
(21.08.2007 в 18:05)
| | обращение к корневой директории. | |
|
|
|
|
|
|
|
для: Lelik
(21.08.2007 в 18:16)
| | а зачем к ней обращаться | |
|
|
|
|
|
|
|
для: winflip
(21.08.2007 в 16:50)
| | Тут такое дело - браузер, даже имея картинку в кеше (и "засунув" её в кеш только-что), все-равно всякий раз, отображая её, лезет на сервер и проверяет http-заголовок картинки - "а не изменилась ли?"
Лучший поэтому, ИМХО, способ (дабы браузер вовсе не ходил на сервер) будет динамическое построение страницы DOM-методами.
А именно: один раз грузите нужную картинку с параметром стиля - display: none
Потом клонируете её и "приживляете" клон в нужных местах.
Клон создается из имеющейся на странице картинки, браузер на сервер при создании и "приживлении" клона не ходит.
Ниже даю пример (для MSIE), где событием, дающим команду на "приживление" картинок-клонов является клик по странице. Вполне можете перед кликом выйти в оффлайн и увидите, что попыток обратиться к серверу не будет. Ну а для реальной работы замените onclick на onload:
<html><head>
<script>
function ff ()
{
var obj = document.all.myPic.cloneNode (0);
obj.style.display = 'inline';
var coll = document.all.item ('forPic');
for (var j = 0; j < coll.length; j++)
coll [j].appendChild (obj.cloneNode (0));
}
</script>
</head>
<body onclick="ff()">
<img id="myPic" style="display: none" src="http://www.google.com/intl/en_ALL/images/logo.gif">
...<hr>
<span id="forPic"></span>
...<hr>
<span id="forPic"></span>
...<hr>
<span id="forPic"></span>
...<hr>
<span id="forPic"></span>
</body></html>
|
Таким образом вы решите и вторую вашу проблему - можете в МЕТА-теге прописать no-cashe и вовсе ни одна картинка не будет кешироваться. Включая и повторяющуюся - ибо, как я уже написал выше, при клонировании браузер делает клоны из имеющейся на странице картинки, а не из кеша. | |
|
|
|
|
|
|
|
для: CNT
(21.08.2007 в 18:17)
| | спасибо | |
|
|
|
|
|
|
|
для: winflip
(21.08.2007 в 18:24)
| | Не за что.
Разумеется, для "красоты" (чтобы страница не "дергалась", выделяя место под "приживляемые" клоны) надо во всех спанах с id="forPic" предусмотреть место под картинку, т.е. задать линейные размеры спанов (ну или ещё каких-то тегов, внутрь которых будете вставлять клоны - TD там или что-то).
Для кроссбраузерности надо коллекцию all при обращении к картинке-оригиналу заменить на коллекцию images. Ну и конструкцию all.item Mozilla не понимает. Поэтому каждый из спанов должен иметь свой уникальный ID, а в коде функции вместо
var coll = document.all.item ('forPic');
прописываете массив из строк, содержащих эти ID:
var coll = new Array ('forPic1', 'forPic2', 'forPic3');
Соответственно, внутри цикла вместо
coll [j].appendChild
пишете
document.getElementById (coll [j]).appendChild | |
|
|
|