Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

WebP без тяжелых модулей


 Поделиться

Рекомендованные сообщения

От вопроса сразу к делу. Для начала нам нужна поддержка webp на сервере, по настройке на vps есть замечательный мануал от digitalocean, если это нормальный shared то думаю включат без проблем на beget работает из коробки и далее ставим модификатор, и вуаля получаем прогрессивный формат всех изображений на сайте без танцев с бубном и модулей 

WebP.ocmod.xml

Изменено пользователем stickpro
  • +1 4
Ссылка на комментарий
Поделиться на других сайтах

11 минут назад, stickpro сказал:

От вопроса сразу к делу. Для начала нам нужна поддержка webp на сервере, по настройке на vps есть замечательный мануал от digitalocean, если это нормальный shared то думаю включат без проблем на beget работает из коробки и далее ставим модификатор, и вуаля получаем webp без танцев с бубном и модулей 

WebP.ocmod.xml 1 \u043a\u0411 · 4 downloads

 

Надо попробовать, однозначно большое спасибо! Вопрос не играет роль версия opencart?

Изменено пользователем Anatohi
Ссылка на комментарий
Поделиться на других сайтах


Только что, Anatohi сказал:

 

Надо попробовать, однозначно большое спасибо! Вопрос не играет роль версия opencart?

тестировалось на 2.3 остальные версии не проверял

Ссылка на комментарий
Поделиться на других сайтах

:) str_replace output
ню-ню... ах да 
зато бесплатно

Ссылка на комментарий
Поделиться на других сайтах

30 минут назад, stickpro сказал:

Для начала нам нужна поддержка webp на сервере

Для начала нужна поддержка на шаред exec, а уж потом спрашивать за webp.

 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

1 минуту назад, ibond сказал:

Для начала нужна поддержка на шаред exec,

так ведь бесплатно же.. (я вам ничего не обещал (с))

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах

$re = '/(cache)(.*)(\.jpg|\.png|.jpeg)/U';

cache/image/jpegнтуая картинка.png

 

upd
Прошу прощения но регулярка рабочая.


cache/image/jpegнтуая картинка.PNG
а так не рабочая.

Ссылка на комментарий
Поделиться на других сайтах

Ну как бы webp только для оптимизаторов параноиков ибо как вот
https://caniuse.com/#feat=webp
https://www.stetic.com/market-share/browser/

т.е если Ваша аудитория сидит не с Apple гаджетов, то вроде как и ОК, в противном случае как минимум 30% webp не увидит

Ссылка на комментарий
Поделиться на других сайтах

@stickpro , интересно, в как апачи сможет отдать картинку если у вас работает, например, nginx + апачи, что бывает в 99.9% случаев на общем хостинге?

У вас же ее апачи отдавать собрался?

Тоже самое касается случаев чистого nginx.

В 99.9% случаев именно nginx отдает картинки. Апачи даже понятия не имеет, что в природе существуют картинки. До апачи даже запрос от браузера не доходит, его обрабатывает nginx. И только nginx видит вот это:

 

HTTP_ACCEPT: image/webp

 

Апачи никогда его не увидит, только в случаях:

1) если у вас работает только апачи, что является крайне непроизводительной схемой работы сервера. На общем хостинге вы вряд ли такое встретите. VDS, настроенные кое-как в расчет не берем.

2) если хостер позволил вам переключить обработку статики с сервера nginx на апачи.  Но таких хостеров можно по пальцам пересчитать. А во-вторых, это будет снова непроизводительная схема, т.е. заведомо понижается производительность.  Т.е. улучшается одно за счет ухудшения другого.  Конечно, чисто для эксперимента это годится.

 

Кстати, открою секрет, что никакого кода php не нужно чтобы апачи отдавал webp если апачи обрабатывает статику. И вы напрасно изобретали велосипед на php.  Этот код давно известен, и у меня он тоже открыто опубликован прямо здесь на форуме:


 

# Check if browser support WebP images
RewriteCond %{HTTP_ACCEPT} image/webp

# Check if WebP replacement image exists
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f

# Serve WebP image instead
RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]

<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept
</IfModule>

AddType image/webp .webp

<FilesMatch "\.(jpg|jpeg|gif|png|ico|webp)$">
    Header set Cache-Control "max-age=2592000, must-revalidate"
</FilesMatch>

 

 

да, в вашем случае (даже если все заработает), то гугл будет еще ругаться, что у вас изображения не кешируются в браузере, и снизит за это вам оценку.

Но на такие мелочи, думаю, что не стоит даже обращать внимание.

 

давайте будем исходить из того, что у 95% пользователей все же не VDS, а общий хостинг, и нередко с отключенным exec. Там, где VDS - там нет ограничений никаких, но это слишком малый процент пользователей.

 

главное чтобы каждый хостер предоставил возможность пользоваться сwebp. Таймвеб уже предоставил?

Помню, давеча вы таймвеб приводили в качестве примера. Можете показать как сайт на таймвебе отдает страницы с картинками в формате webp?

Ссылка на комментарий
Поделиться на других сайтах

6 минут назад, Waha сказал:

т.е если Ваша аудитория сидит не с Apple гаджетов, то вроде как и ОК, в противном случае как минимум 30% webp не увидит

 

и гугл посчитает реальное время загрузки страницы для этих устройств от Apple.

А не будет обращать внимание на съэмулированные баллы. Баллы во время эмуляции - это лишь примерная первичная оценка гугла.  Он всегда ориентируется в конечном счете по реальным показателям, полученным из статистики.

 

У хостеров на общем хостинге еще бывает неприятность.  Это ограничение по нодам, грубо говоря вам дают 20Гиг диска, но только 10 000 нод.  Т.е. кол-во файлов у вас лимитировано.  И его хватает пока у вас только JPEG, например, сжатый, а на webp уже нод не хватает.  Вам ведь нужна пара файлов в таком случае.

Это мне один заказчик поведал.  На практике всегда не все так гладко как в теории.  А потому этот заказчик сказал, что его отлично устраивает мой сжатый JPEG за счет mozjpeg.

Ссылка на комментарий
Поделиться на других сайтах

5 минут назад, sitecreator сказал:

 

и гугл посчитает реальное время загрузки страницы для этих устройств от Apple.

А не будет обращать внимание на съэмулированные баллы. Баллы во время эмуляции - это лишь примерная первичная оценка гугла.  Он всегда ориентируется в конечном счете по реальным показателям, полученным из статистики.

 

У хостеров на общем хостинге еще бывает неприятность.  Это ограничение по нодам, грубо говоря вам дают 20Гиг диска, но только 10 000 нод.  Т.е. кол-во файлов у вас лимитировано.  И его хватает пока у вас только JPEG, например, сжатый, а на webp уже нод не хватает.  Вам ведь нужна пара файлов в таком случае.

Это мне один заказчик поведал.  На практике всегда не все так гладко как в теории.  А потому этот заказчик сказал, что его отлично устраивает мой сжатый JPEG за счет mozjpeg.

Сикиль, ну реально... попридержи коней со своим модулем и не затыкай им любое решение по зжатию картинок. ну не время и не к месту. Можно и без твоего модуля в 95/100 зайти. Особенно имея VPS

Ссылка на комментарий
Поделиться на других сайтах

1 минуту назад, sitecreator сказал:

 

и гугл посчитает реальное время загрузки страницы для этих устройств от Apple.

А не будет обращать внимание на съэмулированные баллы. Баллы во время эмуляции - это лишь примерная первичная оценка гугла.  Он всегда ориентируется в конечном счете по реальным показателям, полученным из статистики.

 

У хостеров на общем хостинге еще бывает неприятность.  Это ограничение по нодам, грубо говоря вам дают 20Гиг диска, но только 10 000 нод.  Т.е. кол-во файлов у вас лимитировано.  И его хватает пока у вас только JPEG, например, сжатый, а на webp уже нод не хватает.  Вам ведь нужна пара файлов в таком случае.

Это мне один заказчик поведал.  На практике всегда не все так гладко как в теории.  А потому этот заказчик сказал, что его отлично устраивает мой сжатый JPEG за счет mozjpeg.

Готовы ли для комьюнити допилить мод?  Eсли нет то прошу администрацию @dinox удалить посты @sitecreator за флуд

  • +1 3
Ссылка на комментарий
Поделиться на других сайтах

Только что, Waha сказал:

95/100

т.е если у меня сейчас 94/97 без оптимизации изображений, то оптимизировав картинки я до сотки догоню попугайчиков? :o

Ссылка на комментарий
Поделиться на других сайтах

Ну ничего другого, как ответа вопросом на вопрос, я не ожидал, это у вас в привычке походу

Ссылка на комментарий
Поделиться на других сайтах

5 минут назад, stickpro сказал:

Ну ничего другого, как ответа вопросом на вопрос

 

не стесняйтесь, спрашивайте, что именно вам непонятно, я еще раз повторю.

какое именно предложение неясно?

 

вы не поняли про nginx?  Так я поясню, не проблема. Вы не получите на общем хостинге доступ к конфигу nginx.  Я вас спрашивал в надежде, что вы знаете какой-то способ обойти это ограничение. Ну, а вдруг?

 

вам непонятно вот это утверждение в вопросительной форме? даже не знаю уместно ли спрашивать вас знакомо ли вам такое понятие как "риторический вопрос"?

 

20 минут назад, sitecreator сказал:

Если задача не имеет решения на общем хостинге, то смысл пытаться ее решить? 

 

тут же пояснил сразу:

 

20 минут назад, sitecreator сказал:

Но в общем случае она не имеет решения.

 

Еще раз:

 

способ, который вы выбрали не имеет в общем случае решения на общем хостинге из-за его особенностей. В подавляющем большинстве случаев у пользователя нет никакой возможности контролировать обработку изображений сервером. Общий случай я подробно уже описал выше (это nginx+ апачи. Статикой заведует именно nginx)   Есть исключения и для таких хостеров, но это все же редкость, мы же вроде бы рассматриваем универсальный вариант.

Ссылка на комментарий
Поделиться на других сайтах

если совсем коротко, то предложенное вами решение будет нерабочим в общем случае, т.е. в большинстве случаев.

В определенных случаях может вполне работать.

Если у кого-то будет работать, то и замечательно, значит,что не зря старались. И кому-то будет польза.

 

В принципе не имею ничего против вашего решения. Просто указал на отдельные его недостатки, для кого-то они могут и не быть недостатками.

Если у половины заработает, то и славненько. Другой половине я смогу помочь если что.

 

Ссылка на комментарий
Поделиться на других сайтах

25 минут назад, sitecreator сказал:

если совсем коротко, то предложенное вами решение будет нерабочим в общем случае, т.е. в подавляющем большинстве случаев.

В определенных случаях может вполне работать.

Если у кого-то будет работать, то и замечательно, значит,что не зря старались. И кому-то будет польза.

 

Я прекрасно вас понимаю,  продажи падают,  новый ягуар содержать не так легко,  но если моё бесплатное решение подойдет для,  40% пользователей сообщества,  это куда лучше для всего комьюнити чем торговля воздухом

Ссылка на комментарий
Поделиться на других сайтах

1 час назад, Waha сказал:

Сикиль, ну реально... попридержи коней со своим модулем

 

напомните, когда мы с вами на брудершафт пили, что вы мне "тыкать" решили?

не могу припомнить....а если не пили, то отчего эта фамильярность и быдло-тон?

 

Если у вас есть аргументы в виде кода или чего-то не менее существенного, то милости просим. Но "Сикиль" разве, что в подворотне сойдет за аргумент.

Думаю, что вы просто забылись на каком форуме находитесь. Тут так не принято. И, заметьте, что я даже не упоминал про модуль в этой теме. Вы уже видите то, чего даже нет в тексте? Это риторический вопрос, так, на всякий случай...

Ссылка на комментарий
Поделиться на других сайтах

Пожалуйста, вот вам картинки с циферками и буковками.

Все же понимают, что здесь представлено? Это браузер FireFox

Надеюсь, что автор кода тоже сможет понять одну из принципиальных своих ошибок. Не говорю, что единственную.

Она совершенно четко указана на этих 2-х скриншотах. 

 

@stickpro ,   уже поняли, про что идет речь?

Я имею ввиду вашу принципиальную ошибку в вашем коде, которая делает его неработоспособным во многих случаях.

 

 

 

 

 

DcrU8OQ.jpg

 

Gf1esz6.jpg

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Смотрим какие заголовки отправляет браузер на сервер при ожидании документа HTML:

 

браузер Хром:

 

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3

 

а вот браузер FireFox:

 

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 

 

Вот же ж печаль, досада!  Этот браузер не отправляет при получении HTML никакой информации про webp. Он эту информацию отправляет только при запросе изображений. И что же мы тогда ищем, используя php?

 

if( strpos( $_SERVER['HTTP_ACCEPT'], 'image/webp' ) !== false )

 

@stickpro , ваша же строчка?

Не знали, не учли?   Ну, бывает.....

А в других браузерах кроме Хрома смотрели, мож там тоже какая "засада" кроется?

В браузере от майкросфт тоже такой же принцип отправки запроса на сервер как у FF, но кто им пользуется то, не смотря на поддержку webp? 

 

Прошу заметить, что мы и так условно считаем, что у нас на сервере есть апачи, и именно апачи обрабатывает изображения, доступны на сервере EXEC и собран хостером cwebp, который разрешено использовать в виде короткой команды.   Т.е. и так мы уже рассматриваем довольно редкую комбинацию звезд на небосклоне.

Так к этому еще добавляется, что и не в любом браузере работает, который поддерживает webp?

 

Зато бесплатно, зато без "тяжелых модулей". Честно говоря, мне сложно судить в скольких случаях из 100 решение будет работать.  Я обратил ваше внимание лишь на 2 принципиальные проблемы, которые не позволяют получить результат в подавляющем большинстве случаев.  Не считаю нужным смотреть в сторону мелких ошибок, которые также могут привести не к тем результатам, которые ожидались. Они, с одной стороны, мелкие, а с другой - они сводят на нет собственно функцию данного решения и приводят лишь к пустому пожиранию пространства жесткого диска или SSD без ожидаемого результата.

 

Знаете, вспомнилась (вроде бы к месту) поговорка про соринку в чужом глазу и бревно в собственном.

Вот когда сможете разобрать лесоповал и бурелом в собственном коде, то тогда, возможно, что сможете указывать другим на их песчинки. Но прежде обязательно проверьте, а не торчит ли у вас где-то бревнышко снова.

 

Итак, каков итог?

Есть код, который работает при определенных условиях на сервере и только в случае если конечный пользователь использует определенный браузер, а не любой, поддерживающий webp.

Считаю, что в целом это достойный результат. Отчего ж не пользоваться?

 

 

 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

8 часов назад, chukcha сказал:

$re = '/(cache)(.*)(\.jpg|\.png|.jpeg)/U';

cache/image/jpegнтуая картинка.png

 

upd
Прошу прощения но регулярка рабочая.


cache/image/jpegнтуая картинка.PNG
а так не рабочая.

 

это такие мелочи, коллега.... я мог бы привести массу вариантов еще когда она будет нерабочей. А смысл?

В основном же работает? Ну вот! Этого вполне достаточно.

 

Неидеальное решение, но придираться не стоит.   Человек хочет нести людям пользу. А это главное.

Вон сколько спасибо в репу сказали, значит, что все устраивает. Оценивает же конечный потребитель.

 

  • +1 3
Ссылка на комментарий
Поделиться на других сайтах

@sitecreator ещё раз повторюсь,  готовы ли допилить мод для комьюнити?  Нет?  Прошу перестать флудить в теме,  никто не говорил,  что это идеальное решение,  но оно рабочее,  opencart 0.1 тоже не был самым стабильным движком,  но вырос в полноценную CMS за счет комьюнити,  а не за счет коршунов. 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

@stickpro

У меня такой вопрос, а чего Вы в своем решении используете exec?

Не проще было бы использовать imagewebp()?

imagewebp с версии php 5.4 входит в GD библиотеку.

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.