question
Пользователь-
Публикаций
275 -
Зарегистрирован
-
Посещение
Весь контент question
-
Всё работает так здорово, что я сам не заметил подмены. Загружается файл jpg во всех случаях, только в старых браузерах это обычный jpeg, в новых, поддерживающих webp - файл с тем же именем и тем же расширением, но со сжатием webp. То есть, по одному и тому же адресу старый браузер получит картинку весом 120 кб, новый - 60 кб. В итоге главная страница стала загружаться быстрее, вес с 2 мб снизил до 1.2 мб. Что особенно актуально для мобильных.
-
Мой вариант, если верить google page speed insights, работает. А вот мой браузер упорно грузит jpeg вместо webp.
-
Поясняю, что делает мой код в resize.php. После создания ресайза в виде jpg/png/gif проверяет, есть ли такой файл и если он существует, кладёт рядом точно с тем же именем, но с расширением webp (ну и сжатием webp), то есть теперь у нас 2 файла на любой вкус. Далее - правка в htaccess: Если браузер поддерживает webp Если существует запрашиваемый файл, но с расширением webp То происходит редирект с xxx.jpg на xxx.webp, то есть, браузеру отдаётся второй файл. В html-коде сайта никаких правок: запросили jpg, выдали то, что поддерживает браузер. Вот только одна беда, редирект в .htaccess не работа
-
Я понял, что вы хотите, заодно разобрался с тем, что такое webp, какие браузеры поддерживают этот формат и как распознать такой браузер. Всё гениальное просто. Очень просто, но потратил на это весь вечер. В resize.php в самый конец добавляете $webp_filename = preg_replace('/\.[^.]+$/','',$resized_filename).".webp"; if (file_exists($webp_filename)) { } else { $imagetoconvert = imagecreatefromjpeg($resized_filename); imagewebp($imagetoconvert, $webp_filename, 80); imagedestroy($resized_filename); } Далее в htaccess прописываете AddType image/webp .webp <IfModu
-
Можете поделиться тем, что у вас есть? А то, что вы хотите, как я понимаю, делается так: есть resize, по аналогии пишется функция resize2, одна выдаёт webp, вторая - jpeg
-
Не понимаю, почему мой код не работает. Вроде, должен записывать файл (в моём случае с расширением jpg) с webp сжатием.
-
Странно, я ведь писал ответ... Для начала в районе 300 строки return imageJpeg($dst_img, $dst_file, $quality); надо заменить на return imageWebp($dst_img, $dst_file, $quality); Вот только у меня сайт перестаёт работать, на первом же изображении код обрывается. Автору советую проверить на работоспособность такой код: <? $file='1.jpg'; $image= imagecreatefromjpeg($file); imagewebp($image,'1.webp',80); imagedestroy($image); ?> Если 1.webp не создаётся, значит, у вашего хостера не установлены необходимые компоненты.
-
Автор капитальный красавчик. Всех тебе благ, денег побольше и здоровья крепкого.
-
Интересная тема. Гугл к сайтам, использующим webP относится более лояльно. Автор, у вас что-то получилось?
-
Собственно, всё. Если в шаблоне стоит параметр — будет по умолчанию, если нет — резка. То есть, все вхождения |resize:800:600 надо заменить на |resize:800:600:r А мне по коду показалось, что наоборот - где нет параметра, идёт ресайз, где есть - обрезка Как это сделать? Полагаю, в п.3. заменить if($aspect) на if(!$aspect) Просто у меня нет установленной симплы, на которой мог бы ставить опыты.
-
Лучше расскажу подробно. На сайте куча картинок товаров с размерами 786х800, 743х412, 800х600, 1024х500, 1024х2048 и т.д..., плюс адаптивная вёрстка,И все эти картинки надо выводить в шаблоне с одинаковым соотношением сторон, а не просто менять размер. Поэтому хотелось бы иметь ресайз для обычного вывода картинки и ресайз с параметром, который приведёт картинки к единому размеру, обрезав края. Да, я знаю, что это можно решить в шаблоне через div style="background:...", но отношение поисковиков в этом случае, как показала практика, не очень хорошее - им подавай картинки именно через тег <img
-
Методом энтропии, приняв погрешность за 0.5.
-
Вроде, решил. И это может быть первым шагом к созданию более серьёзной системы кеширования. Например, есть идея кешировать хедер, футер, меню, а контент - отдельно. Или кешировать по параметрам, например, только определённые категории. _________ Интернет-витрина (магазин, в котором вместо привычной для многих корзины кнопка "купить" с всплывающим окошком) работает. Комментарии работают Скорость загрузки увеличилась Нагрузка снизилась. Непонятно лишь, на что эти 6-8 мсек тратятся, неужели на ssd чтение файла такое долгое... _________ Но вот все ли заголовки передаются корректно - вопрос. И вдру
-
Поскольку мой случай индивидуален и к memcached не имеет отношения, создал отдельную тему с половиной решения http://forum.simplacms.ru/topic/13683-кеширование-половина-решения/
-
Это - код файла index.php <?PHP $time_start = microtime(true); $cacheurl = md5($_SERVER['REQUEST_URI']); $rndomis=rand(123456,654321); require_once('view/IndexView.php'); $view = new IndexView(); $themecache = $view->settings->theme; error_reporting(E_NONE); session_start(); setlocale(LC_TIME, 'ru_RU.UTF-8'); if ((file_exists('cache0/'.$themecache.'/'.$cacheurl)) && (!$_POST[text]) && (!$_POST[name])) { header("Content-type: text/html; charset=UTF-8"); header("Expires: ".gmdate("D, d M Y H:i:s", time()+($rndomis*3))." GMT"); $cachefile = 'cache0/'.$theme