|
|
|
| Задача следующая.
Пользователь на клиентской стороне совершает некоторое действие. Javascript'ами в некоторую пустую до этого область экрана с сервера загружается изображение.
Сложность заключается в том, что подгружаемое изображение на этот момент физически не существует - его должен сформировать серверный php-код.
На сервере имеются изображения большого размера. На разных страницах сайта отображаются изображения разных размеров. Поскольку эти изображения на сервере будут часто меняться, то хранить отдельные копии изображений определённых размеров будет нецелесообразно - при изменении одного изображения придётся синхронно изменять и его копии.
Посему решено хранить на сервере только большие изображения (в одном варианте), а их разные размеры получать с помощью php-кода.
В данном случае изображения при загрузке страницы загружаться не должны - подгрузка каждого изображения происходит только по действию пользователя без перезагрузки всей страницы.
Таким образом, необходимо организовать следующую последовательность действий:
1. Пользователь совершает действие
2. JavaScript отправляет запрос серверу
3. Сервер из большого изображения лепит изображение нужного размера и возвращает его на клиентскую сторону.
Как проще всего реализовать данные действия ?
Один из вариантов - вместо img'ев использовать маленькие фреймы, в которые по действию пользователя загружать php-страницы, где php-код будет просто выводить в выходной поток изображения. | |
|
|
|
|
|
|
|
для: Cyrax
(29.01.2009 в 22:54)
| | Судя по вопросу, Вы не знаете ни JS, ни PHP... Что же Вы хотите услышать в ответ?
Сгенерируйте на клиенте код вида
<img src="http://server.com/image.php?var=value" />
|
| |
|
|
|
|
|
|
|
для: Loki
(29.01.2009 в 23:19)
| | Только здесь проблема возникает. На странице 200 таких картинок.
При генерации страницы для этих IMG'ев указываю:
...src="image.php?id=1"...
...src="image.php?id=2"...
...src="image.php?id=3"
...
...src="image.php?id=200"
|
При этом скрипт image.php сделал пустым (без всяких команд).
В результате все эти 200 картинок загружаются около минуты. Это же ненормально.
// Соответственно, если убрать параметры или указать один и тот же id, то загрузка происходит мгновенно, поскольку фактически загружается только одна картинка.
Т.е. вся эта минута тратится только на 200 вызовов image.php ? | |
|
|
|
|
|
|
|
для: Cyrax
(30.01.2009 в 13:58)
| | А зачем сразу? Сразу грузите обычный html , а по вызову из JS меняйте у картинок src в зависимости от выбранной. | |
|
|
|
|
|
|
|
для: Николай2357
(30.01.2009 в 14:03)
| | >А зачем сразу? Сразу грузите обычный html , а по вызову из JS меняйте у картинок src в зависимости от выбранной.
А разница будет ? Что сразу страницу с src формировать, что при нажатии на кнопку на клиенте. Ведь столько же времени будут вызываться эти image.php.
На странице имеется волшебная кнопка, которая сразу все картинки отображает. Без перезагрузки страницы. Вот в этом случае мне и придётся 200 раз грузить скрипт image.php.
А почему без перезагрузки (основная причина) - состояние таблицы, которое на данный момент сформировано JS-ми (действия пользователя), должно быть сохранено. При перезагрузке страницы, естественно, таблица окажется в начальном состоянии.
Хотя всё нормально. Что-то я подумал, что страница на это время блокируется.
Только вот хостер будет ругаться - ведь проц (тестирую у себя локально) на 100% загружен в течении 60 секунд.
И непонятно, на что тратится 100% процессорного времени. Ведь это вызовы пустых скриптов и всё. Байты туда-сюда и всё. Проц у меня 3200 MГц. И 100% загрузка на 60 секунд.
Это ненормально... | |
|
|
|
|
|
|
|
для: Cyrax
(30.01.2009 в 15:31)
| | Насчёт 100%-ной загрузки процессора не совсем так.
Это первые несколько секунд - 100%, далее 60-70%, из них AVP - 10-20%
Т.е. в течение 60 секунд процессор (httpd.exe, браузер, php-cgi и всё это хозяйство) занят на 50%. | |
|
|
|
|
|
|
|
для: Cyrax
(30.01.2009 в 15:31)
| | >А разница будет ? Что сразу страницу с src формировать, что при нажатии на кнопку на клиенте. Ведь столько же времени будут вызываться эти image.php.
На сколько я понял, 200 раз вызывается функция ресайза. Тогда разница будет. И вполне ощутимая. | |
|
|
|
|
|
|
|
для: Николай2357
(30.01.2009 в 17:25)
| | >На сколько я понял, 200 раз вызывается функция ресайза. Тогда разница будет. И вполне ощутимая.
Ресайза на клиенте не происходит. Изображение нужного размера формирует скрипт image.php. | |
|
|
|
|
|
|
|
для: Cyrax
(30.01.2009 в 13:58)
| | >Это же ненормально.
А что тут ненормального? 200/60=3,3 запроса в секунду | |
|
|
|
|
|
|
|
для: Cyrax
(30.01.2009 в 13:58)
| | >// Соответственно, если убрать параметры или указать один и тот же id, то загрузка происходит мгновенно, поскольку фактически загружается только одна картинка.
>Т.е. вся эта минута тратится только на 200 вызовов image.php ?
Минута тратится на 1 вызов, на получение контента одного документа. Поскольку запрошен один документ, а не 200. | |
|
|
|