|
|
|
| Всем привет. Постал вопрос об экономии места на хостинге, поэтому хотел бы узнать об эффективности ресайза фотографий на лету. Т.е. сервер отдает большую фотографию (оригинал) и потом php-скриптом идет ее ресайз и пользователь получает фотографию нужного размера. Есть одно сомнение в нагрузке на сервер. Допустим на главной сайта я выгружаю 50 фоток если их все ресайзить, то как это скажется на сервере, не повиснет, не будет тупить? Посещаемость растет, сейчас уже 50 посетителей постоянных онлайн, вскоре будет 200 и больше. Вот примерная ф-ция которую бы я использовал:
function onlineresize($f,$type=1){
if ($type == 0) $w = 70;
if ($type == 1) $w = 90;
if (!isset($q)) $q = 100;
$src = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/'.$f);
$w_src = imagesx($src);
$h_src = imagesy($src);
header("Content-type: image/jpeg");
if ($w_src > $w){
$dest = imagecreatetruecolor($w,$w);
if($w_src>$h_src){
imagecopyresized($dest, $src, 0, 0, round((max($w_src,$h_src)-min($w_src,$h_src))/2),0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
}else if($w_src<$h_src){
imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w,min($w_src,$h_src), min($w_src,$h_src));
}else if($w_src==$h_src){
imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
}
imagejpeg($dest,'',$q);
imagedestroy($dest);
imagedestroy($src);
}
}
|
в хтмл коде
<img border="0" width="90" height="90" src="/requests/resizer.php?photo='.$res['result']['em_produce_image3'][0].'" />
|
resizer.php
<?php
if(isset($_GET['photo'])){
$photo = magic_off(strval($_GET['photo']));
onlineresize($photo);
}
?>
|
| |
|
|
|
|
|
|
|
для: TetRiska
(19.12.2011 в 16:43)
| | если встал вопрос о месте на сервере, то почему бы сразу не заливать туда изображения нужного размера?
Залил оригинал, уменьшил до нужного размера, потом удалил оригинал... | |
|
|
|
|
|
|
|
для: Slo_Nik
(19.12.2011 в 18:01)
| | я так и делаю что пложу копи уже уменьшенные, на 1 товар у меня выходит по 4 копии - 70х70, 100х100, 180х135, 320х240.....уже товаров 32 тищи, то файлов накопилось много | |
|
|
|
|
|
|
|
для: TetRiska
(19.12.2011 в 18:36)
| | максимальный размер изображения 320х240? 50 штук на страницу? А 50 Онлайн у вас это 50 хостов за какое время? 15 минут или час? допустим 15 минут.... примерно 3 чела в минуту, примерно 1 в 20 секунд. т.е. 50 конвертов раз в 20 секунд. Это ваще не нагрузка. Только вы кеширование включите обязательно, чтоб юзер не грузил одну фотку по 20 раз подряд. И лучше браузер надуть не показывая ему что это пхп файл, а не jpeg. | |
|
|
|
|
|
|
|
для: Sfinks
(19.12.2011 в 19:28)
| | 1 - 320х240 максимальный
2 - 50 онлайн на данный момент
3 - кешировать нельзя, т.к. контент всегда разный, т.е. рандом | |
|
|
|
|
|
|
|
для: TetRiska
(19.12.2011 в 19:59)
| | > 3 - кешировать нельзя, т.к. контент всегда разный, т.е. рандом
Что при одном и том же товаре вы загружаете любой файл и ресайзите его???
Не думаю. Может список товаров на странице рандомный?
Я говорю не про кеширование страницы, а именно про кеширование браузером ресайзнутого рисунка.
Подумайте хорошенько.... Вы же в файл resizer.php передаете параметр, который идентифицирует какой файл нужно переразмерить? Если подключить mod_rewrite, то можно сделать так, что у каждого файла картинки в браузере будет уникальный урл, например "/img/tov126/size240x320/foto.jpg", и он будет думать что это тот же файл и не будет его перезагружать, а уже на стороне сервера апач будет редиректить запрос на файл resizer.php с нужными параметрами. | |
|
|
|
|
|
|
|
для: Sfinks
(19.12.2011 в 23:34)
| | список товаров на странице всегда разный при каждом обновлении страницы | |
|
|
|
|
|
|
|
для: TetRiska
(20.12.2011 в 13:09)
| | Я понял что список разный. А фото у одного и того же товара одинаковое? Значит его можно кешировать. | |
|
|
|