Jump to content

Recommended Posts

Posted (edited)

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

WebP.ocmod.xml

Edited by stickpro
  • +1 3

Share this post


Link to post
Share on other sites
Posted (edited)
11 минут назад, stickpro сказал:

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

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

 

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

Edited by Anatohi

Share this post


Link to post
Share on other sites
Только что, Anatohi сказал:

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
30 минут назад, stickpro сказал:

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

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

 

  • +1 1

Share this post


Link to post
Share on other sites
1 минуту назад, ibond сказал:

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

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

  • +1 2

Share this post


Link to post
Share on other sites

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

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

 

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


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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

@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?

Share this post


Link to post
Share on other sites
6 минут назад, Waha сказал:

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

 

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

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

 

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

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

Share this post


Link to post
Share on other sites
5 минут назад, sitecreator сказал:

 

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

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

 

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

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

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

Share this post


Link to post
Share on other sites
1 минуту назад, sitecreator сказал:

 

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

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

 

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

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

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

  • +1 2

Share this post


Link to post
Share on other sites
Только что, Waha сказал:

95/100

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
5 минут назад, stickpro сказал:

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

 

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

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

 

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

 

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

 

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

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

 

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

 

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

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

 

Еще раз:

 

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

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

 

Share this post


Link to post
Share on other sites
25 минут назад, sitecreator сказал:

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

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

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

 

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

Share this post


Link to post
Share on other sites
1 час назад, Waha сказал:

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

 

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

 

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

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

 

 

 

 

 

DcrU8OQ.jpg

 

Gf1esz6.jpg

  • +1 1

Share this post


Link to post
Share on other sites

Смотрим какие заголовки отправляет браузер на сервер при ожидании документа 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

Share this post


Link to post
Share on other sites
8 часов назад, chukcha сказал:

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

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

 

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


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

 

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

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

 

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

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

 

  • +1 3

Share this post


Link to post
Share on other sites

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

  • +1 1

Share this post


Link to post
Share on other sites

@stickpro, отличное решение! Ждем появление в сборке ocstore!

Share this post


Link to post
Share on other sites

@stickpro

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.