Согласно рекомендациям сервиса Google Pagespeed Insights, для ускорения работы сайта, необходимо уделить особое внимание изображениям. Картинка в формате jpg может весить около 100кб, тогда как в формате webp вес сокращается до 30кб. Для начала работы необходимо в файл /local/php_interface/init.php добавить следующий скрипт:
function makeWebp ($src, $rewrite = false) {
if ($src && function_exists('imagewebp')) {
$newImgPath = str_replace(array('.jpg', '.jpeg', '.gif', '.png'), '.webp', $src);
if (!file_exists($_SERVER['DOCUMENT_ROOT'].$newImgPath) || $rewrite) {
$info = getimagesize($_SERVER['DOCUMENT_ROOT'].$src);
if ($info !== false && ($type = $info[2])) {
switch ($type) {
case IMAGETYPE_JPEG:
$newImg = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].$src);
break;
case IMAGETYPE_GIF:
$newImg = imagecreatefromgif($_SERVER['DOCUMENT_ROOT'].$src);
break;
case IMAGETYPE_PNG:
$newImg = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'].$src);
imagepalettetotruecolor($newImg);
imagealphablending($newImg, true);
imagesavealpha($newImg, true);
break;
}
if ($newImg) {
imagewebp($newImg, $_SERVER['DOCUMENT_ROOT'].$newImgPath, 90);
imagedestroy($newImg);
}
}
}
if (file_exists($_SERVER['DOCUMENT_ROOT'].$newImgPath)) { // Если создать файл не получилось - вернем исходное изображение
return $newImgPath;
}
}
return $src;
}
А далее в любом компоненте или шаблоне можно использовать следующий код:
$arItem["PREVIEW_PICTURE"]["SRC"] = makeWebp($arItem["PREVIEW_PICTURE"]["SRC"]);
Скрипт будет проверять, есть ли изображение в новом формате и если нет - создавать его, а если есть - сразу выводить то, которое было ранее создано.