На платформе maemo мне с момента покупки не хватало 4-х используемых мною программ. Это были адекватный twitter-клиент, joikuspot, Яндекс.Карты и Opera. За пару недель все изменилось, twitter-клентом вновь стал веб-интерфейс, JoikuSpot был быстренько портирован на maemo, Яндекс.Карты в каком-то виде есть в Maemo Mapper (через месяц обещают релиз с полной поддержкой), а вот про Opera (Mini|Mobile) ни слуху ни духу. Были удачные попытки запуска его через microemu как простого jar-файла. Однако, user experience у такого метода хромает. Через эмулятор приложения не могут создавать новые соединения (gprs, bluetooth, wifi, любые), только цеплять активную сессию, шрифты получаются уж очень говеные, учитывая, что я запускаю приложение, не оптимизированное под разрешение в 800 пикселей, естественно, растровые шрифты читаемы только в режиме «очень большие». Ну и сам способ запуска через костыли не внушал доверия. Хотя, нужно отдать должное, тормозов не было, а скроллинг пальцем отлично работал. Тогда я попытался спросить у представителей Opera Software в твиттере по поводу их планов на maemo, на что получил ответ «нам лень, а платформа не популярна». Ну и нужно учитывать, что Opera недавно свалила с Qt, а Nokia всячески продвигает его на своих продуктах. ЧСВ Opera Software просто не даст им вернуться назад. Ну и третья причина — Opera последнее время стала любить денюжки больше, чем своих пользователей, о чем говорят контракты с МТС, выпуск Opera Mobile для iPhone, и многие другие факторы. Так что нас послали нахуй. С этим нужно что-то делать. Сидеть по GPRS, который все так же дорог даже в больших городах, со встроенного полноценного браузера невозможно. Иначе ты обречен грузить страницы по 400 килобайт и платить по 5 рублей за каждый клик по ссылке. MicroB очень хорош для быстрого халявного wifi, но сидеть по gprs с него получается дорого.
Теперь, собственно, к делу. На помощь нам и тут приходит Великий Тукс и каскад прокси-серверов. Кеширующий squid я решил не ставить, так как наша главная цель ни столько скорость, сколько уменьшение трафика. Обойдемся двумя некеширующими прокси bfilter и ziproxy. Первый нужен, чтобы полность вырезать рекламу со страничек, ибо на некоторых сайтах на нее уходит просто львиная доля трафика. Честно сказать, делает он это не очень, например не режет некоторую флеш-рекламу, или считает явные баннеры обычными картинками. Так что если нужна просто баннерорезка, то лучше посмотреть в сторону адекватных AdBlock+. Ziproxy нужен для сжатия всего, что видит. Умеет хорошо жать картинки самых популярных в интернете форматов, а так же отдавать html, css и js в маленьком gzip.
Установка этого дела на православные операционные системы не должна вызвать вопросов. Два пакета — ziproxy, bfilter, несколько зависимостей, готово. У меня возникла лишь одна проблема: bfilter по каким-то причинам был убран из Debian Squeeze, поэтому пришлось брать пакеты из репозитория Lenny. На Gentoo, говорят, надо убрать его из chroot, иначе не работает (об этом написано в мане, на который ссылки дам позже). После установке у нас есть два демона, запускающихся из /etc/init.d/. Если быть честным, настроек они не требуют вообще, но с дефолтными настройками они просто ничего не делают. Поэтому идем сначала в файл /etc/bfilter/config, а затем в /etc/ziproxy/ziproxy.conf. Там все так же легко и понятно, как в каком-нить php.ini, так как 95% файлов занимают комментарии. Я рекомендую поставить сжатие картинок в 10 раз, либо вообще отключить. Но для тех, кому этого покажется мало, даю, как обещал, ссылки на небольшие мануалы по настройке этого всего:
http://wiki.firstvds.ru/index.php/Ziproxy
http://wiki.firstvds.ru/index.php/BFilter
Что мы имеем теперь? Связку, в которой принимает соединение ziproxy, передает его bfilter, затем отдает обратно. Открываем порт ziproxy и коннектимся как к http-proxy. Специально для этого я выбрал не встроенный браузер телефона (он слишком быстрый и хороший для этого, оставим его для полноценного wifi-интернета), а Mozilla Fennec 1.0, который недавно вышел для maemo, а скоро релизится для для Android. Крикаем по иконке firefox в аппликациях и вводим about:config. Получаем варнинг о возможной потере гарантии, благополучно забиваем. Опций там много, так что вводим в строке поиска proxy. Нас интересуют три параметра: в network.proxy.http ставим свой IP или домен (без преикса http://), в network.proxy.http_port ставим порт, который прописали в ziproxy.conf, и самое главное: network.proxy.type ставим 1 (что соответствует режиму http proxy). Кстати, мышка в firefox как в microb не активируется (видимо пока), так что навигация вся стрелочками и клавиатурой, редактирование через enter. Перезапускаем браузер и можно наслаждаться своим сжимающим прокси.
Теперь немного цифр. Страница vas3k.ru с графикой и всем остальным весит 590 килобайт. После ziproxy она сжимается до 120 кб. Та же страница без картинок весит 20 кб, после прокси — 4 кб. И это еще учитывая отсутствие рекламы на ней. Например страница зайцев.нет ужимается этой связкой почти в 8 раз. Хотя, если честно, я все равно предпочитаю отключать картинки при браузинге по gprs.
Теперь о минусах данного решения. Во-первых, любой прокси сервер, а особенно сжимающий картинки, жрет cpu. Если пользователь один, это не заметно, но в продакшене понадобится уже целый кластер серверов. Во-вторых, такого сжатия, как на серверах opera нам этими средствами не получить. Потому что их прокси еще и корректируют html-код, а наш только сжимает. В-третих, на моем сервере ziproxy работает нестабильно. Поэтому я прописал в crontab выполнение /etc/init.d/ziproxy start каждые пол часа. Быть может проблема только у меня, но факт, что иногда я получаю ошибку о недоступности прокси. Ну и в-четвертых, не у всех дома есть свой linux-сервер. Хотя это уже не наша проблема :) На счет скорости загрузки писать не буду, потому что на медленном российском gprs такой латенси вообще не заметен. Но вот пользоваться таким прокси на десктоптом браузере я бы не рекомендовал. Страницы грузятся куда медленнее.