Согласно рекомендациям сервиса 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"]);
Скрипт будет проверять, есть ли изображение в новом формате и если нет - создавать его, а если есть - сразу выводить то, которое было ранее создано.