«Приручаем и прокачиваем огнелиса: The Ultimate Guide»
Раздел: Социальные сети
Лирическое вступлениеНе люблю гонку версий, своей бессмысленностью отдаленно напоминающую гонку вооружений. Не успели как следует довести до ума текущую версию — выпускают новую, с новыми багами, уязвимостями и «особенностями». Для таких как я — любителей стабильных и проверенных решений для корпоративной среды, да и для себя тоже — у команды Мозилы есть сборка типа ESR: в течение длительного времени для нее выходят обновления, устраняющие ошибки и уязвимости, сама же major версия браузера не обновляется! Вот ссылка на страницу оф.сайта, откуда можно скачать эту замечательную ESR-версию (достигается путем не слишком очевидных ходов), также, ESR можно скачать с официального FTP ftp.mozilla.org/pub/firefox/releases/latest-esr/ Только что вышла давно мной ожидавшаяся 17-я ESR версия (предыдущая была только 10-я). В связи с этим событием решил написать подробное руководство по оптимизации нашего (не)любимого браузера — с разбором всех параметров, что каждый из них делает и откуда он получен. Часть 1. Чтоб Мозила не тормозила1. К своему удивлению обнаружил: характерное торможение, с которым многие, наверно, сталкивались, вызывается встроенным скриптом, определяющим системные настройки прокси. Если прокси нет — указываем это явно: «настройки — дополнительно — сеть — соединение» — «без прокси». Если наш лис работает в корпоративной среде — по возможности задаем явно прокси или скрипт proxy.pac 2. Минимум дополнений (addons): лишних не устанавливаем, из тех что установлены держим включенными только те, которые реально нужны. Помним: лишний плагин — лишняя затрата вычислительных ресурсов при прорисовке каждой страницы. Собственно плагины (plugins): отключаем по максимуму все, и в первую очередь dotnet, DRM, java quick start. В условиях корпоративной среды принимаем меры, чтобы эти плагины вообще не появлялись в списке установленных. 3. Ограничение объема и автоматическая оптимизация базы данных places — файла places.sqlite. Первое достигается параметром max_pages (см.ниже), второе — (теоретически) происходит штатно раз в месяц. В совеременных версиях ФФ, к сожалению, в интерфейсе не предусмотрены настройки для ограничения времени хранения и размера истории посещений страниц. Естественно, пробел этот могут восполнить аддоны. В качестве альтернативы принудительному заданию ограничения числа страниц в истории, рекомендую аддон PlacesCleaner: он производит очистку и оптимизацию БД с заданным интервалом (в днях). Если нужна только частая оптимизация, а число страниц уже задано жестко через конфиг, может быть интересен аддон Vacuum Places Improved. 4. Ограничение размера кэша до разумного размера — явно указать в настройках (или через pref). Думаю, понятно каждому: гигабайт распыленных по диску файлов и индексы всего этого скорости работы не прибавят. Часть 2. Избавляемся от нежелательного контентаДавно прошли те времена, когда проблемой являлась загрузка, собственно, рекламных баннеров в формате gif. Сейчас зло — счетчики и централизованные баннерные сети, шпионящие, еще, к тому же, за пользователем: во-первых, скрипты, которые тяжелее «полезной нагрузки» — самой рекламной графики, во-вторых, централизованный характер: повышенная нагрузка на их сервер то и дело приводит к задержке подгрузки их контента, а не загрузив его, браузер откладывает рендеринг страницы — в результате мы ждем даже при быстром интернете… А засилье флэш-рекламы? Оно представляет собой «сейчас», по сравнению с «тогда» несопоставимо большую проблему: достаточно посмотреть, сколько памяти уходит на процесс plugin-container — сравнимо с самим браузером: новые версии adobe flash player стали очень прожорливыми и каждый лишний флэш-баннер следует расценивать как лишнее открытое приложение! Ниже приводится рекомендуемый список аддонов, призванных решить проблему нежелательного контента: 1. Семейство плагинов adblock — наиболее удобный и, как следствие, популярный инструмент. Подробности Из всего их многообразия рекомендую обратить внимание на 2: Adblock plus — самая свежая версия аддона, и на его альтернативу Adblock edge. Достоинства: начинают блокировать рекламу сразу после установки («из коробки»), умеют блокировать любой контент (картинки, флэш, скрипты) и даже убирать указанные в черном списке HTML-контейнеры прямо из страницы (по id, class...), можно как добавлять готовые подписки, так и составлять свои правила. Недостатки: добавленная по умолчанию подписка RuAdlist+Easylist (внимание!) не блокирует счетчики; готовые наборы правил из подписок представляют из себя слишком длинные списки, что чревато растратой вычислительной мощности и оперативной памяти; нужно изучать собственный синтаксис Адблока при желании создать своё правило вручную. Для легкого решения проблемы со счетчиками, добавляем в подписку список «Против счётчиков»: https://ruadlist.googlecode.com/svn/trunk/cntblock.txt, он легковесный — 12 кб и является единственной упомянутой здесь подпиской, которая не приводит к повышению потребления ресурсов браузером. Но он не блокирует скрипт google-analytics, поэтому требуется еще добавить правило ||google-analytics.com/ga.js Есть еще список BitBlock — чтобы не грузились плагины от социальных сетей — кнопки фейсбучных лайков, google+ и т.п., http://ruadlist.googlecode.com/svn/trunk/bitblock.txt. Все эти дополнительные фильтры можно установить в 1 клик на странице их разработчика: https://code.google.com/p/ruadlist/ Необходимо помнить, что подписки содержат огромное число правил, в основном ненужных, из-за чего ощутимо замедляется загрузка тяжелых и сложных страниц (вроде результатов поиска картинок в яндексе и гугле) увеличивается потребление памяти: до 120 Мб с тремя подписками против 56 Мб с Адблоком без правил (браузер показывает 1 вкладку с пустой страницей). Если при наличии пары прямых рук мы не хотим жертвовать скоростью и тратить лишнюю память — удаляем все подписки (кроме, пожалуй, «против счетчиков») и создаем правила сами: вручную универсальные правила, а на часто посещаемых сайтах — в визуальном режиме блокируем все баннеры, в первую очередь флэш (у адблока есть возможность показать список элементов и иногда — создавать правило кликом мыши непосредственно по нежелательному элементу). Результат нашей работы хранится в профиле ФФ в поддиректории adblockplus (adblocklite) и эти настройки теперь можно тиражировать вместе с самим плагином на другие *upd* И еще про adblock plus: для повышения производительности обязательно отключайте в настройках (кнопка плагина, выпадающее меню) «считать срабатывания фильтров»! Адблок при каждом попадании перелопачивает мегабайтный (в случае подписок) patterns.ini — заглянул туда и ужаснулся. Не случайно Adblock edge и adblock lite поставляются с отключенным по дефолту подсчетом срабатываний фильтров. 2. noscript, yesscript — блокировка скриптов, помогает победить такое зло как скрипты счетчиков и баннерных сетей. Подробности noscript работает по принципу белого списка, есть предустановленный белый список, yesscript — по принципу черного списка. Недостатки для noscript: специализация на блокировке скриптов, невозможность компромисса: блокирует скрипты даже для урла открытой на данной вкладке страницы, что обязательно испортит работоспособность многих сайтов, а в случае установки галки «полностью разрешить выполнение javascript» (по-моему, единственно приемлемый режим) и добавления отдельных скриптов (например, счетчиков) в черный список — сам черный список увидеть в настройках (или задать его заранее) невозможно. Ну а yesscript — реализующий адекватный алгоритм черного списка — по скудности настроек способен разочаровать даже фаната минимализма: есть только список урлов (рег. выражений?) скрипты откуда следует блокировать, его нужно создавать самостоятельно. Для сравнения: Adblock, если в нем пользоваться только самописными правилами, точно также заблокирует скрипт, но кроме него — еще и картинки, и флэш, и целые блоки HTML кода прямо в странице. Разница очевидна. 3. imglikeopera — очень интересный плагин, незаслуженно обделенный популярностью. Блокирует картинки и флэш. Подробности Идея заимствована из «Оперы» — кнопка, управляющая показом картинок. Достоинства: умеет принудительно кэшировать графический контент на длительный срок, поддерживает регулярные выражения. Недостатки: не содержит предустановленных наборов правил — всё задается вручную, не управляет скриптами (но был экспериментально допилен мной, чтобы добавить и эту возможность — впечатления вызывает смешанные), в исходный код страницы — в тэги добавляет лишние параметы «ilo-full-src» и при сохранении страниц они там присутствуют. Часть 3. Правильные настройки по дефолтуСамый простой способ развертывания ФФ с заданными настройками — положить js-файл, аналогичный prefs.js в профиле в директорию [путь установки ФФ] / defaults / preferences. Я его называю так же как и в профиле — prefs.js, но имя не принципиально, главное чтобы было расширение .js Итак, создаем js-файл со следующим содержимым: * upd *
Файлов js в defaults / preferences может быть несколько. Это удобно: опциональный блок параметров локализован в отдельном файле, его можно подложить на конкретный ПК в сети или удалить оттуда. Легко сделать свой дистрибутив ФФ для Windows с правильными настройками: распаковываем инсталлятор, директорию win32 можно смело удалить, в директории core находится то, что запишется в program files. Кладём наш js-файл с правильными настройками в core\defaults\preferences. Можно сразу удалить maintenanceservice_installer.exe и maintenanceservice.exe — не засоряем ПК лишними сервисами. Получившийся распакованный дистрибутив можно устанавливать вручную или развертывать всеми возможными способами — точно так же, как и исходный exe-дистрибутив: setup.exe воспринимает все те же ключи. Часть 4. Подробно о том, что каждый параметр делаетИсточники: {1} решение найдено мной {2} www.latestonnet.com/2012/01/17/optimize-firefox-to-run-4-times-faster-than-before.html {3} sonikelf.ru/optimizuruem-firefox/ {4} egonitron.com/2007/05/25/the-truth-about-the-firefox-pipelining-trick/ {5} techlogon.com/2012/12/02/how-to-speed-up-firefox-tweaking-guide/ Первоисточник (правда, для старых версий): http://kb.mozillazine.org/Category:Preferences Для начала о стратегии. В отличие от множества 1) предотвращаем причины «тормозов» 2) отключить весь лишний и мешающий функционал — уведомления, 3) экономия оперативной памяти 4) включить HTTP 1.1, но без экстремизма нет назойливым обновлениям без спросу {1}оптимизация расхода памяти количество страниц, сохраняемых в оперативной памяти, для быстрого перехода назад — уменьшая значение экономим память; рекомендуют ставить 0, но я (как и в {2}) считаю оптимумом 1: в подавляющем большинстве случаев нам нужен возврат именно на 1 шаг, и здесь лис порадует нас своей скоростью; размер кэша в оперативной памяти {1}, {3}выгрузка страниц памяти при сворачивании окна {3} Внимание: browser.cache.memory.capacity = 4096 означает, что будет выделено 4 Мб на кэш в памяти (значение в кб). Если свободной памяти заведомо много, рационально ставить значения в разы больше. С другой стороны, минимальный размер кэша означает, что в корпоративной среде всем будет хватать памяти… browser.cache.memory.max_entry_size означает максимальный размер кэшируемого в память объекта (значение в кб). По идее, чем меньше, тем эффективнее расходуется память. Часто (как в {3}) неправильно принимают за параметр, определяющий размер самого кэша. Подтверждение моих слов — в самом браузере, смотреть тут: about:cache?device=memory Видно, что заданный нами browser.cache.memory.capacity в точности отображается в строке «Maximum storage size». отучаем от лишних вопросов нет назойливым предложениям сделаться браузером по умолчанию {1} firefox не показывает саморекламу и ненужные напоминания при первом запуске {1}противодействуем сбору информации отключить шпионаж Google и проверку урлов на фишинг — ускоряет работу: браузер делает меньше ходов {1}посылать заголовок «do not track» {1} интерфейс, юзабилити открываем пустую страницу по дефолту — идеально для корпоративной среды{1}запрещаем сайтам отключать контекстное меню {1} очищаем историю загрузок при выходе из ФФ {1} ограничиваем максимальное число гарантированно сохраняемых записей в истории до 400: такой подход ограничения размера базы places без плагинов — единственно возможный на современных версиях ФФ (понято из исходников и подтверждено экспериментально) {1} в новом табе показываем по умолчанию пустую страницу без тайлов {1} отключаем анимацию табов {5} не показываем места для картинок — ускоряет прорисовку {5} аппаратное ускорение графики принудительное задействование графического ускорителя: браузер более требователен к видеодрайверу и ускорителю, чем игры? Говорим твёрдое «нет» этому недоразумению! {1}кодировки какие наборы символов кэшируемкодировка страниц по умолчанию {1} сколько наборов символов кэшируем (по умолчанию 5) {1} сетевые настройки {1-5}отключает никому здесь не нужный IPv6 включение HTTP1.1 (множественные запросы в одном соединении) при прямом соединении и через прокси соответственно. задержка перед превышением допустимого числа keep-alive соединений, по умолчанию 10 (сек), в {2} рекомендуется 0, я считаю, что лучше поставить не 0, а 1, сохранив некоторую задержку увеличение с 6 (умолч.) до 8 макс. числа постоянных соединений с 1 сервером отключение предзагрузки следующих страниц, в условиях корпоративной среды — нужная настройка «безопасность» отключение бесполезных вопросов о слабом шифровании и смешанном контенте, на которые все пользователи всё равно ответят «да» {1}улучшаем юзабилити в предупреждении о самоподписанном сертификате — экономим клики (убрать полностью это предупреждение пока не удается) {1} прорисовка страниц (экспериментально, привожу этот блок в связи с тем, что раньше низкоуровневые настройки прорисовки страниц до их загрузки;часто рекомендуют content.notify.backoffcount = 5, но никто не говорит, что нужно еще включать content.notify.ontimer, чтобы первая настройка на что-то влияла постоянно рекомендовали content.notify.backoffcount = 5) todo: найти бы способ отучить ФФ ругаться на недействительный сертификат, но пока такой настройки я не нашел Дата публикации: 2012-12-29 |