Привет, читатели. Это мой первый пост на хабре. Нахожусь в приподнятом настроении, поэтому решил поделиться знанием с миром, ну и для себя оставить, когда через месяц сложно будет вспомнить последовательность действий. Частенько мне приходилось уже изобретенное колесо изобретать снова. Получалось быстрее, тем не менее, мне это стоило обычно недюжинного напряжения ума.
Многие, как и мы, хостят свои сайты на т.н. shared hosting. Наш хостер fozzy всем хорош, менять его желания никакого нет, поэтому, когда в google adwords поддержке нас ткнули носом в низкий рейтинг pagespeed insight на мобильной версии, пришлось снова вернуться к вопросу оптимизации изображений.
Несколько месяцев назад этот вопрос уже возникал. Я пытался по всяким мануалам, в том числе с Хабра, добиться высокого рейтинга на pagepseed, но одно дело получить 100 баллов при загрузке страницы:
<html><body>Hello world!</body></html>
и совсем другое дело получить высокую оценку на странице интернет магазина, на котором куча скриптов, которые нельзя отключить или загружать асинхронно.
В общем оптимизация тогда закончилась на том, что из невыполненного осталось только сжатие изображений. Остальные пункты или были выполнены или их просто невозможно было выполнить не обрезая функциональность.
Те из Вас, кто интересовался вопросом оптимизации изображений, наверняка знают, что библиотеки PHP для работы с растровым изображением, что imagick, что GD, при любых настройках сжатия не позволяют получить изображения, которые гугл не сможет сжать еще сильнее. Тогда искания пришли именно к тому, что после генерации растрового изображения средствами php, нужно его сжимать чем-то еще. Тогда эти Optipng и jpeglib появились на горизонте. Спросил поддержку о возможности использования этих программ на shared hosting, сказали — нельзя. Потыкался, потыкался и плюнул.
Мне ленивому и очень гордому показалось унизительной и просто неприемлемой перспектива грузить на сайт 400к картинок предварительно сжатых во всех нужных разрешениях. Ведь я пользуюсь ПК еще со времен ДОСа, а в сеть ходил еще во времена FIDONET по внутреннему модему на скорости 9600 бод.
Тогда я решил, если не могу сделать красиво, то вообще не буду делать.
Прошли месяцы. Очередной подход к снаряду увенчался успехом. Все дело в настрое, я просто решил, что должен найти способ. Тем более, что в англоязычном тырнете писали об установке отдельных программ на shared hosting. Про fozzy ничего не нашел, зато нашел, как кто-то на dreamhost optipng 0.7.4 поставил.
Получилось как в той сказке про лягушек в ведре с молоком. Одна устала барахтаться и утонула, а другая не ожидая чего-то определенного, продолжала и продолжала. Вспоминая опыт успешной сборки драйвера для своего китайфона philips xenium на андроиде, не имея исходников прошивки, я продолжал и продолжал.
Делюсь результатом с Вами. Вот восстановленная по памяти последовательность событий рабочего варианта установки на виртуальных хостинг fozzy optipng 0.7.6
Журнал событий
Смотрю версию системы:
cat /proc/version
Показывает, что у нас Red Hat 4.4.7-4, а именно:
«Linux version 2.6.32-531.23.3.lve1.2.66.el6.x86_64 (mockbuild@koji.cloudlinux.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Sep 12 10:57:40 EDT 2014»
Ставлю на VirtualBox centOS 7 x86_64.
Ставлю нужные для компиляции optipng пакеты. Я выбрал при установке минимальный набор, поэтому после установки мне пришлось поставить gcc и mc. Делаем так:
yum install mc gcc
Я не создавал пользователей и сидел рутом. Создаем каталог для работы