Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод одного изображения несколько раз
 
 автор: winflip   (21.08.2007 в 16:50)   письмо автору
 
 

вот есть такой план. есть картинка которая повторяется несколько раз на одной странице. как сделать чтобы картинка загружалась один раз а выводилась много.
и еще такой вопросик нельзя ли указать браузеру чтобы он кэшировал только эту картинку.
спасибо огромное всем ответившим

   
 
 автор: sim5   (21.08.2007 в 17:32)   письмо автору
 
   для: winflip   (21.08.2007 в 16:50)
 

Кешировать и выводить через JS.

   
 
 автор: winflip   (21.08.2007 в 17:41)   письмо автору
 
   для: sim5   (21.08.2007 в 17:32)
 

ну а как. не могли бы вы привести пример. буду благодарен

   
 
 автор: Lelik   (21.08.2007 в 17:49)   письмо автору
 
   для: 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=""/>

   
 
 автор: winflip   (21.08.2007 в 18:05)   письмо автору
 
   для: Lelik   (21.08.2007 в 17:49)
 

а что означает слэш?

   
 
 автор: Lelik   (21.08.2007 в 18:16)   письмо автору
 
   для: winflip   (21.08.2007 в 18:05)
 

обращение к корневой директории.

   
 
 автор: winflip   (21.08.2007 в 18:18)   письмо автору
 
   для: Lelik   (21.08.2007 в 18:16)
 

а зачем к ней обращаться

   
 
 автор: CNT   (21.08.2007 в 18:17)   письмо автору
 
   для: 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 и вовсе ни одна картинка не будет кешироваться. Включая и повторяющуюся - ибо, как я уже написал выше, при клонировании браузер делает клоны из имеющейся на странице картинки, а не из кеша.

   
 
 автор: winflip   (21.08.2007 в 18:24)   письмо автору
 
   для: CNT   (21.08.2007 в 18:17)
 

спасибо

   
 
 автор: CNT   (21.08.2007 в 18:41)   письмо автору
 
   для: 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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования