можно ли одним аякс запросом убить двух зайцев
Суть проблеммы такова,
Я выбираю картинку из базы данных, и вывожу ее пользователю (<img src="index.php?...."), также на том этапе(после выборки из БД мне нужно узнать размер картинки, делаю и это),
как можно отослать браузеру сразу и картинку и размер? Можно ли "пихать доп. данные" в header?
Два аякс запроса будут слишком нагружать сервак, это не правильно, а если записывать в сессию, то она у меня опаздывает иногда, что и понятно. У кого есть какие решения? ::HELP::PLEASE::
По вашей задаче вообще не вижу ничего сложного.
У вас картинки где хранятся? В БД или на жестком диске? И в том, и в другом случае размеры картинки можно получить одним запросом, если база спроектирована прямыми руками. А клиенту отправлять уже JSON:
path: "index.php?....",
width: 100,
height: 500
}
В общем, вы дали мало данных, чтобы хоть как-то помочь решить проблему
насчет одного запроса это понятно опять будет запрос к БД вызов функции imagecreatepng и imagex() imagey()...
лишь для того чтобы узнать размеры картинки, а вы как считаете лучше тогда и поля ширины и высоты картинки добавить в БД?
тогда первый запрос будет уходит чтоб получить саму картинку, а второй на получение размеров картинки
Я не могу понять - что мешает всё это вернуть в одном запросе? Зачем делать два ajax-запроса? В одном запросе вернуть сразу картинку и её размеры. Я же написал выше.
А тут я без понятия. Надо смотреть на загруженность сайта и потом лишь думать - стоит ли заводить лишние поля или нет.
зачем извращатся с кукисами.. content-lenth?
На самом деле кэшировать метаданные изображения вполне имеет смысл (размерность, глубина цвета, возможно хэши) - карман они совсем не тянут, и в определенных случаях могут быть полезными.
да, вопрос таки как раз в этом, просто я не совсем понимаю вот мой код:
.....
header("Pragma: no-cache", true);
header("Cache-Control: no-cache, no-store, must-revalidate", true);
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
exit;
и на этом все, тоесть отправляется только картинка...
а как "засунуть" доп.данные (размер картинки) в headers, как предлагает RussianSpy?
Что это за AJAX? Это обычное отправление картинки браузеру. Здесь и AJAX-а так-то нет. Можно сделать просто <img src="picture.php" />, где в picture.php указать Ваш код.
А если уж делать так, как вы, то послушайте совет Alexander92. Просто добавьте произвольный Header, например, header("Size: 100x200");
Потом приёмником ответа просто прочтите данные указанным выше методом и вытащите размеры.
Просто добавьте произвольный Header, например, header("Size: 100x200");
Тогда уж лучше X-Size.