CAB |
Отправлено: 18 декабря 2011 — 20:30
|
Super Member
Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011
Откуда: Москва
Репутация: 30
|
Представляю на суд общественности очередную версию доработки мода. Мне тут пришла в голову мысль, спровоцированная увиденным на другом движке, а чего это мы превью создаём скриптом... А пускай браузер это делает...
CODE:function replace_img_link($imlink) {
global $fm;
/*
Доработка мода превью-копий прикреплённых изображений
Автор CAB http://exbb.su/
*/
if (ini_get('allow_url_fopen')) { // проверяем разрешены ли удалённые соединения
$headersget = @get_headers ($imlink, 1); // запрос заголовков файла
if (preg_match("|200|", $headersget[0])) { // выделяем из ответа файл есть
if (($size = @getimagesize($imlink)) !== FALSE) { // запрос параметров изображения
if ($size[0] <= 512) { // сверяем ширину картинки с установленным числом
$imgtag = "<i> <img src=\"$imlink\" border=\"0\"></i>"; // выводим картинку без превью
} else {
if ($fm->exbb['redirect'] && !stristr($imlink, 'http://www.'.$fm->exbb_domain) && !stristr($imlink, 'http://'.$fm->exbb_domain)) // проверяем свой домен
$_imlink = 'rd2.php?'.$imlink; // редиректим чужой домен
else $_imlink = $imlink; // свой домен выводим без редиректа
$imgtag = $fm->LANG['ImgLinked']."<a href=\"$_imlink\" rel=\"clearbox\" title=\"".$fm->LANG['ToIncrease']."\" target=\"_blank\"><img src=\"$_imlink\" border=\"0\" width=\"512\"></a>"; // формируем код превью
}
} else {
$imgtag = "<i> <span class=\"admin\">• </span>$imlink</i>"; // файл не изображение
}
} else {
$imgtag = "<i> <span class=\"admin\">• </span>$imlink</i>"; // нет ответа что файл есть
}
} else {
$imgtag = "<i> <img src=\"$imlink\" border=\"0\"></i>"; // удалённые соединения не разрешены
}
return $imgtag;
}
Что мы в этом случае получаем? Уменьшение запросов до 2-х; снижение нагрузки на наш сервак.
К сожалению, реальное тестирование не показало уменьшения времени генерации страницы. Видимо основное время тратится не на создание превью скриптами, а на первичное скачивание файла, который потом кешировался для создания превью. Я то, наивный, предположил что оно уменьшится раза в два...
Также в процессе создания данной версии доработки, я пришёл к выводу, что реально добиться снижения времени генерации страниц в этом случае можно только двумя способами:
1. Закачиванием изображений на свой форум (типа кеширования);
2. С помощью браузерного скрипта, подставляя width=ХХХ уже после генерации страницы на сервере.
Оба эти варианта мне не нравятся. В первом случае это занимает место на хостинге, во втором страница "скачет" в процессе загрузки. |
|
|
CAB |
Отправлено: 19 декабря 2011 — 17:39
|
Super Member
Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011
Откуда: Москва
Репутация: 30
|
Наконец-то мне удалось найти вариант, при котором скорость генерации страницы не зависит от "тормознутости" сервера картинок...
Для тех, у кого установлен мод редиректа, в файле include\lib.php функциюCODE:function replace_img_link($imlink) заменяем полностью на строкиCODE:function replace_img_link($imlink) {
global $fm;
/*
Доработка мода превью-копий прикреплённых изображений
Автор CAB http://exbb.su/
*/
if ($fm->exbb['redirect'] && !stristr($imlink, 'http://www.'.$fm->exbb_domain) && !stristr($imlink, 'http://'.$fm->exbb_domain)) // проверяем свой домен
$_imlink = 'rd2.php?'.$imlink; // редиректим чужой домен
else $_imlink = $imlink; // свой домен выводим без редиректа
$imgtag = $fm->LANG['ImgLinked']."<a href=\"$_imlink\" rel=\"clearbox\" title=\"".$fm->LANG['ToIncreaseAll']."\" target=\"_blank\"><img src=\"$_imlink\" alt=\"$imlink\" style=\"max-width: 512px;\"></a>"; // формируем код превью
return $imgtag;
}
В файле language\russian\lang_front_all.php строкуCODE:$this->LANG['ToIncrease'] = 'Кликните для просмотра в полном размере';
заменяем на строкуCODE:$this->LANG['ToIncreaseAll'] = 'Кликните для перехода к изображению';
(Отредактировано автором: 19 декабря 2011 — 17:41) |
|
|
|