Перейти к содержанию
Официальный форум поддержки Simpla

question

Пользователь
  • Публикаций

    275
  • Зарегистрирован

  • Посещение

Весь контент question

  1. Всё работает так здорово, что я сам не заметил подмены. Загружается файл jpg во всех случаях, только в старых браузерах это обычный jpeg, в новых, поддерживающих webp - файл с тем же именем и тем же расширением, но со сжатием webp. То есть, по одному и тому же адресу старый браузер получит картинку весом 120 кб, новый - 60 кб. В итоге главная страница стала загружаться быстрее, вес с 2 мб снизил до 1.2 мб. Что особенно актуально для мобильных.
  2. Мой вариант, если верить google page speed insights, работает. А вот мой браузер упорно грузит jpeg вместо webp.
  3. Поясняю, что делает мой код в resize.php. После создания ресайза в виде jpg/png/gif проверяет, есть ли такой файл и если он существует, кладёт рядом точно с тем же именем, но с расширением webp (ну и сжатием webp), то есть теперь у нас 2 файла на любой вкус. Далее - правка в htaccess: Если браузер поддерживает webp Если существует запрашиваемый файл, но с расширением webp То происходит редирект с xxx.jpg на xxx.webp, то есть, браузеру отдаётся второй файл. В html-коде сайта никаких правок: запросили jpg, выдали то, что поддерживает браузер. Вот только одна беда, редирект в .htaccess не работа
  4. Я понял, что вы хотите, заодно разобрался с тем, что такое 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
  5. Можете поделиться тем, что у вас есть? А то, что вы хотите, как я понимаю, делается так: есть resize, по аналогии пишется функция resize2, одна выдаёт webp, вторая - jpeg
  6. Не понимаю, почему мой код не работает. Вроде, должен записывать файл (в моём случае с расширением jpg) с webp сжатием.
  7. Странно, я ведь писал ответ... Для начала в районе 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 не создаётся, значит, у вашего хостера не установлены необходимые компоненты.
  8. Автор капитальный красавчик. Всех тебе благ, денег побольше и здоровья крепкого.
  9. Интересная тема. Гугл к сайтам, использующим webP относится более лояльно. Автор, у вас что-то получилось?
  10. Наткнулся на свойства css object-fit и object-position, решающие мою задачу. https://html5book.ru/svoystva-object-fit-i-object-position/
  11. Непонятно, что вообще вы хотели сказать и как предлагаете эти стили использовать. Накидал в ваш пример кучу первых попавшихся фотографий - получил адский трэш.
  12. Собственно, всё. Если в шаблоне стоит параметр — будет по умолчанию, если нет — резка. То есть, все вхождения |resize:800:600 надо заменить на |resize:800:600:r А мне по коду показалось, что наоборот - где нет параметра, идёт ресайз, где есть - обрезка Как это сделать? Полагаю, в п.3. заменить if($aspect) на if(!$aspect) Просто у меня нет установленной симплы, на которой мог бы ставить опыты.
  13. Лучше расскажу подробно. На сайте куча картинок товаров с размерами 786х800, 743х412, 800х600, 1024х500, 1024х2048 и т.д..., плюс адаптивная вёрстка,И все эти картинки надо выводить в шаблоне с одинаковым соотношением сторон, а не просто менять размер. Поэтому хотелось бы иметь ресайз для обычного вывода картинки и ресайз с параметром, который приведёт картинки к единому размеру, обрезав края. Да, я знаю, что это можно решить в шаблоне через div style="background:...", но отношение поисковиков в этом случае, как показала практика, не очень хорошее - им подавай картинки именно через тег <img
  14. Как не работает? Не показывает страницу "все товары" или товар отдельно не выводится? Выдаёт 404? Видимо дело в строке && $_SERVER['QUERY_STRING']!='module=ProductsView'
  15. Методом энтропии, приняв погрешность за 0.5.
  16. Вроде, решил. И это может быть первым шагом к созданию более серьёзной системы кеширования. Например, есть идея кешировать хедер, футер, меню, а контент - отдельно. Или кешировать по параметрам, например, только определённые категории. _________ Интернет-витрина (магазин, в котором вместо привычной для многих корзины кнопка "купить" с всплывающим окошком) работает. Комментарии работают Скорость загрузки увеличилась Нагрузка снизилась. Непонятно лишь, на что эти 6-8 мсек тратятся, неужели на ssd чтение файла такое долгое... _________ Но вот все ли заголовки передаются корректно - вопрос. И вдру
  17. Я просто предложил вот такой вариант, правится всего 1 файл.
  18. Поскольку мой случай индивидуален и к memcached не имеет отношения, создал отдельную тему с половиной решения http://forum.simplacms.ru/topic/13683-кеширование-половина-решения/
  19. Это - код файла 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
  20. И ещё, может знаете, как в php получить комментарий, который отправляют со страницы товара? Что-то типа $_GET['text'];
  21. Отлично. Спасибо за помощь. Огромный плюс вам в карму и всего, чего сами себе пожелаете.
×
×
  • Создать...