Обновить
49.13

Клиентская оптимизация *

Делаем сайты удобнее и приятнее

Сначала показывать
Порог рейтинга
Уровень сложности

CTOcast #3: Беседа с Сергеем Чернышевым

Время на прочтение10 мин
Просмотры2.8K
Представляем третий выпуск подкаста о технологиях, процессах, инфраструктуре и людях в IT-компаниях. Сегодня в гостях у “CTOcast” — Сергей Чернышев, один из лидеров Web Performance Optimization сообщества (Нью-Йорк).
Читать дальше →

Илья Григорик о внедрении HTTP/2

Время на прочтение4 мин
Просмотры39K
Известный специалист по серверной и клиентской оптимизации, соавтор WebRTC, автор книги "High Perfomance Browser Networking" Илья Григорик из Google опубликовал презентацию “HTTP/2 all the things!”, в которой объясняет, как следует настраивать серверную часть под HTTP 2.0, чтобы повысить скорость загрузки страниц и уменьшить latency, по сравнению с HTTP 1.1.


Режим Connection View в браузере показывает загрузку элементов заглавной страницы Yahoo.com в HTTP 1.1

Илья начинает с того, что для современных сайтов бóльшая часть задержек приходится на ожидание загрузки ресурсов, при этом полоса пропускания не является ограничивающим фактором (синим цветом на диаграмме Connection View). По статистике, для загрузки средней веб-страницы браузер делает 78 запросов к 12 различным хостам (общий размер загружаемых файлов 1232 КБ).
Читать дальше →

Зачем нужны стартап-акселераторы: опыт российских проектов в программе ФРИИ

Время на прочтение5 мин
Просмотры17K


В одном из предыдущих материалов в нашем блоге мы уже рассматривали разницу между стартап-акселераторами или инкубаторами. Если коротко, она заключается в сроках и формате поддержки проектов (обычно командам стартапов необходимо на время переезжать в снятый для них офис или коворкинг), сферах применения (акселераторы больше интересуются интернет-проектами), стадии проекта и доле, которую необходимо отдать. В акселераторы чаще приходят команды, нуждающиеся в масштабировании работающего бизнеса, а доля, которую забирает акселератор, редко превышает 5-7%, что оставляет предпринимателям пространство для маневра при общении с будущими инвесторами.

Сегодня мы хотели бы рассказать об опыте прохождения программы акселерации ФРИИ некоторыми российскими стартапами — под катом история ошибок, сюрпризов, смены стратегий и реальные результаты в цифрах.
Читать дальше →

Pivot: подводные камни и выводы на примере стартапа MoneyHero

Время на прочтение12 мин
Просмотры26K


Как показывает практика, бизнес-идея в большинстве случаев доходит до своего реального воплощения как минимум после значительных переработок, а зачастую – только после pivot’а – полного перезапуска стартапа, сопровождающегося радикальной сменой бизнес-модели. Связано это, в первую очередь, с тем, что на этапе формирования бизнес-модели основатель еще не знает точно, как она будет реализована в определенном бизнес-сегменте. Другими словами, если вы не работали в данной области раньше, не «погружены» в тонкости ведения бизнеса в конкретной сфере, эта самая сфера вашу бизнес-модель наверняка (и достаточно серьезно) скорректирует или вообще поставит перед фактом невозможности ведения бизнеса в такой форме, в которой он изначально задумывался.

Один из показательных примеров успешных pivot’ов: Groupon, который первоначально задумывался как альтернатива Kickstarter для некоммерческих проектов (в таком виде он не понравился инвесторам, которые не были уверены в возможности монетизации бизнеса). В качестве еще одного показательного примера часто приводят историю Twitter: прежде чем прийти к идее микроблогов его основатели разрабатывали платформу для подкастов Odeo, которая в итоге не выдержала конкуренции с iTunes.

В программе акселерации ФРИИ также принимали участие компании, которые столкнулись с подобными проблемами и с достоинством вышли из сложившейся ситуации, одна из них – стартап MoneyHero. На примере его истории мы попытаемся разобраться в том, как (на примере чужих проб и ошибок) выработать подходы, которые помогут вам оценить выбранную область бизнеса на предмет жизнеспособности вашей идеи, как можно быстрее проверить идею в деле и не совершать распространенных ошибок, сопутствующих стартапам на этом этапе.
Читать дальше →

SVG, Iconfonts vs PNG

Время на прочтение7 мин
Просмотры50K
image

Статья по мотивам Изображения в верстке. Хватит это терпеть. Скорее даже по мотивам комментариев к этой статье и в общем реакции хабра на призыв использования векторной графики везде, где можно и действительно нужно.

Признаться, я был немного удивлен реакцией на такие мысли в 2014-м то году. По этому случаю рассмотрим более детально существующие техники работы с иконками.

На текущий момент все более-менее просто. Мы можем верстать иконки с помощью SVG, создавать иконочные шрифты, ну и никуда не делась старая добрая техника с применением растра, в частности PNG. Правда добавились некоторые нюансы с появлением кучи HDPI устройств с совершенно разной плотностью пикселей.
Читать дальше →

Мини-курс «Оптимизация веб-производительности»

Время на прочтение1 мин
Просмотры16K
На обучающем ресурсе Udacity запустился мини-курс по веб-производительности от сотрудника Google Ильи Григорика.


Читать дальше →

Анализируем Хабрахабр с помощью Google Page Speed

Время на прочтение3 мин
Просмотры52K
Google Pagespeed — утилита для анализа производительности клиентской части Web-приложения. Довольно обширный анализ укажет на те вещи, которые следует оптимизировать на сайте, повысив скорость и удобство для аудитории. Инструмент полезный и постоянно дополняется новыми возможностями. Проведем анализ Хабра и посмотрим на оценку и рекомендации, которые покажет нам Pagespeed.
image
Читать дальше →

Добавь газку: +200% производительности

Время на прочтение6 мин
Просмотры20K
Привет, Хабр.

В прошлый раз я рассказывал тебе, как мы написали Raw конвертер на JavaScript, а ты сказал мне, что он работает медленно. Сегодня я хочу рассказать о том, как мы ускорили наш raw.pics.io почти в 3 раза. Я не буду постить простыни кода с описанием каждого шага, постараюсь рассказать в общем виде о подходах к оптимизации, которые мы использовали. Также я решил не писать о доступе к DOM, уменьшении количества HTTP-запросов, склеивании и минификации файлов, опциях сжатия на сервере и т.д. Все это техническая работа
Читать дальше →

Совместный эксперимент команд Яндекс.Почты и Nginx: действительно ли SPDY ускорит интернет?

Время на прочтение7 мин
Просмотры67K
Мы в Яндекс.Почте совместно с командой Nginx провели исследование, чтобы на живом примере с подробностями расставить точки над «ё» в вопросе о том, насколько и за счет чего SPDY ускоряет интернет.

Про сам SPDY вы, конечно, знаете. В 2011 году несколько разработчиков компании Google опубликовали черновик нового протокола, призванного стать заменой привычному HTTP. Его основные отличия заключались в мультиплексировании ответов, сжатии заголовков и приоритизации трафика. Первые несколько версий были не вполне удачными, но к 2012 году спецификация устоялась, появились первые альтернативные (не из Google) реализации, доля поддержки в браузерах достигла 80%, вышла стабильная версия nginx с поддержкий SPDY.



Мы поняли, что, судя по всему, протокол из многообещающей перспективы превращается в хорошее отлаженное решение и начали полноценный цикл работ по внедрению. Начали, естественно, с тестирования. Очень хотелось без него поверить в дифирамбы, опубликованные в блогосфере, но этого в проектах с миллионами пользователей делать нельзя. Мы должны были получить подтверждение, что SPDY действительно даёт ускоряющий эффект.

Есть много интересных исследований вокруг SPDY, в том числе самого Google. Компания-автор протокола показывала, что в их случае SPDY ускоряет загрузку на 40%. Исследование протокола SPDY проводила и компания Opera. Но ни методик подсчета, ни примеров страниц, на которых были достигнуты столь впечатляющие результаты, в этих исследованиях не было.
Итак, что именно мы измеряли и к каким выводам пришли

Список оптимизаций рендеринга DOM, реализуемых на уровне Javascript фреймворка

Время на прочтение13 мин
Просмотры27K
С октября 2009 года я занимаюсь разработкой приложения для поиска и прослушивания музыки. Я стремлюсь организовать возможность быстрого взаимодействия пользователя с интерфейсом, и в качестве одного из средств ускорения взаимодействия использую различные способы для быстрой отрисовки страниц.

Предлагаю ознакомиться со способами, реализованными мной в приложении на системном уровне:

  • Использование CSS и переключение классов вместо перестроения DOM дерева
  • Повсемнестное кеширование выборок элементов ($('div.active_part span.highlighter')), атомарные операции по изменению (вместо всеобщей перерисовки, вместо переделывания больших участков DOM дерева)
  • Минимизации чтений DOM во время записи изменений состояний
  • Кеширование размеров и расположения элементов (это спасает от излишнего вычисления при считывании этих значений при наличии других изменений: чтение во время изменения множества частей дерева крайне негативно сказывается на производительности)
  • Аккуратное, не затягивающееся накопление изменений, необходимых произвести в DOM
  • Прикрепление частей изменяющихся коллекций единовременно (когда, например, в середину списка вставляется 3 новых элемента; createDocumentFragment) в конкретное место (after, before) вместо открепления всей коллекции от DOM и повторного прикрепления (и вместо того, чтобы перерисовывать весь список)
  • Прогрессивный асинхронный рендеринг: картина прорисовывается сразу с небольшим количеством деталей, затем деталей появляется всё больше
  • Клонирование нодов (как часть шаблонизации)
  • Кеширование и использование кеша результатов парсинга DOM шаблонов


image image
изображения из части с заголовком «Прикрепление частей изменяющихся коллекций единовременно...»
Читать дальше →

Минификация CSS и Javascript в Website проекте ASP.NET

Время на прочтение4 мин
Просмотры12K
Про минимизацию javascript и css знают все. Ну если кто не знает, то, вкратце, это уменьшение объема файлов за счет удаления комментариев, разметки, переносов строк и прочего. Особенно актуально оно для интернет сайтов, которые при первом же визите пользователя должны порадовать его своей производительностью. Но наш проект, во-первых, работает в локальной сети, а во-вторых, используется на одних и тех же компьютерах изо дня в день, поэтому мы долгое время совсем не задумывались об оптимизации скриптов и стилей. Пока не стали плотно работать с ExtJS.

Созданная страничка со всеми подключенными скриптами и стилями весит больше 5 Мб (около 200 файлов). Одно только сгенерированное DOM-дерево в коде HTML содержит более 500 000 байт. Работать с системой пользователь может начать не раньше, чем через 5 секунд после загрузки страницы (инициализация скриптов, ExtJS и т.п.).

Как оказалось, несмотря на наличие локальной сети у заказчика и частую работу с одними и теми же страницами (должно же быть встроенное кэширование в браузере), иногда с загрузкой страниц возникают проблемы. Поэтому было решено уменьшить количество запросов к серверу и поработать над общей производительностью ExtJS в IE8.
Читать дальше →

Кто быстрее: стартапы или компании-тяжеловесы?

Время на прочтение3 мин
Просмотры4.2K
Терпеливо ждать пока загрузится медленный, но очень нужный сайт в эпоху широкополосного доступа получается с трудом, и если раньше 5-6 секунд ожидания не особо смущали, то теперь такой промежуток времени — вполне себе повод для раздражения. Тенденция для нас любопытная, в связи с чем мы и решили проверить какие результаты демонстрируют сегодня компании.
Читать дальше →

Оптимизация JavaScript и jQuery из-под HTML и CSS при разработке сайта

Время на прочтение3 мин
Просмотры34K
Доброго времени суток, Хабражители. Хочу поделиться неким опытом (советами) при работе с JavaScript + jQuery (по сути, вместо jQuery можете подставить любой другой JS фреймворк). Статья будет интересна новичкам JS и jQuery, но и динозаврам опытным проходить мимо не стоит, в ней вполне можно найти полезную информацию. В основном, в статье я привожу не однозначные случаи, но и место для «стоТыщРазПовтор» я счёл уместным.

image

Инициализация


Сплошь и рядом встречаю загрузку JS файлов в теге . В большинстве случаев - это не корректно! Почему? В этом случае JS начинает загружаться до загрузки HTML, и как следствие клиент дольше ждёт загрузки информации за которой он пришёл. Размещение скриптов в оправдано только в тех случаях, когда JS используется в качестве контроллера (к примеру, всё содержимое на странице мы достаём поблочно через AJAX запросы, в зависимости от URL или Hash). Если не используем, то гораздо лучше вставлять скрипты перед зыкрытием тэга . JS начнёт загружаться только после того, как посетитель увидит страницу.
Читать дальше →

Ближайшие события

Аналитика в рознице: сегодня вы не купили презервативы, а магазин уже знает, когда вам пригодится скидка на детское питание

Время на прочтение9 мин
Просмотры44K

Вот как-то так это хитро работает

Про вашего будущего ребёнка – это, конечно, утрировано, но все может быть. На практике мы помогаем рознице бороться за каждый рубль с помощью математического аппарата. Вот, например, у вас в бумажнике есть карта лояльности, либо вы расплачиваетесь кредиткой. Это значит, что в целом магазин знает, сколько и каких продуктов вам надо. Дальше можно построить оптимальную модель вашего путешествия по магазину и понять, в какой ситуации вы купите больше. Что где должно стоять, какое молоко вы предпочитаете (вдруг вы готовы брать дорогое и натуральное без колебаний?) и так далее. Смоделировать вас по совокупности данных легко.

Такую же аналитику можно применять ко всем аспектам работы розницы.

Из смешного — один раз система просчитала, что будет выгодно уничтожить примерно полтонны бумаги. Сначала думали, что баг — но начали копать и выяснили, что поставщик даёт скидку за определённый порог закупки. А сеть может не успевать продавать нужное количество бумаги. С учётом стоимости склада, поставки и уровня скидки начиная с порога — проще взять и уничтожить кучу товара, чтобы получать его по цене ниже. Скидка минимум вдвое компенсирует убытки от его потери.
Читать дальше →

Опыт построения b2b-продукта: 3 континента за 6 лет и полведра набитых шишек

Время на прочтение21 мин
Просмотры26K
Сегодня нам, компании Maxifier Development, исполняется 6 лет… Ну ладно, соврал, не сегодня. На самом деле случилось это недели две назад, но только сейчас, когда я возвращаюсь из нашего нью-йоркского офиса обратно в родную Самару, наконец-то дошли руки что-то написать по этому поводу.

За шесть лет мы прошли путь от идеи на бумажке до международной компании стоимостью в десятки миллионов долларов. Создали сложный программный продукт в области оптимизации Интернет-рекламы, которым ежедневно пользуются крупные медиа-компании в Европе и Америке и уже подтягивается Россия. Открыли офисы в США, Японии и Англии.

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

Я надеюсь, что теперь мы будем регулярно публиковать статьи, связанные как с нашей предметной областью, так и просто посвященные вопросам разработки, менеджмента, взаимодействия с клиентами и прочим «интересностям» в ИТ. Но в этой, начальной статье хочется просто оглянуться назад, на основные вехи развития нашей компании.
наши скромные завоевания
Читать дальше →

Оптимизация / сжатие SVG-изображений

Время на прочтение2 мин
Просмотры44K
Здарствуй Хабр!
Статья посвящена оптимизации изображений формата SVG.



SVG (от англ. Scalable Vector Graphics — масштабируемая векторная графика) — язык разметки масштабируемой векторной графики, созданный Консорциумом Всемирной паутины (W3C) и входящий в подмножество расширяемого языка разметки XML, предназначен для описания двумерной векторной и смешанной векторно/растровой графики в формате XML.
Читать дальше →

Подтвердите право собственности на сайт в Инструментах для веб-мастеров с помощью Диспетчера тегов Google

Время на прочтение1 мин
Просмотры3.1K
Уровень подготовки веб-мастера: любой

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

Выполните следующие действия:

1. На главной странице Инструментов для веб-мастеров нажмите Управление сайтом и выберите Подтвердите право собственности на этот сайт. Если вы ещё не добавили его, нажмите кнопку Добавить сайт справа вверху.

image
Читать дальше →

Лёгкий сайт или как посадить браузер на диету

Время на прочтение14 мин
Просмотры145K

А что если объединить профессионалов, работавших над крупными web проектами, чтобы создать исчерпывающее руководство по оптимизации front-end разработки?
И получить в результате не скучную инструкцию, а что то поинтереснее? А если позвать Briza Bueno (Americanas.com), Davidson Fellipe (Globo.com), Giovanni Keppelen (ex-Peixe Urbano), Jaydson Gomes (Terra), Marcel Duran (Twitter), Mike Taylor (Opera), Renato Mangini (Google), и Sérgio Lopes (Caelum) чтобы собрать лучшие практики?

Именно это мы и сделали! Мы научим вас создавать быстрые сайты.

Zeno Rocha, руководитель проекта.


Читать дальше →

Проблемы кликов-переходов: сколько леммингов тонет?

Время на прочтение7 мин
Просмотры14K
Проблема кликов-переходов, лемминги-самоубийцы

Однажды при общении с коллегами из AdRiver выяснилось, что далеко не все клики по рекламным объявлениям становятся переходами на целевой сайт. Для меня было бы нормальным услышать, что теряется 5-10% посетителей (вполне естественные цифры в рамках общей погрешности измерений). Но, как оказалось, потери могут составить до 50%. И мы решили разобраться подробнее, где же происходят утечки, почему обычные, здоровые, адекватные клики не становятся переходами.
Где тонут лемминги?

WebMarkupMin HTML Minifier – современный HTML-минимизатор для платформы .NET

Уровень сложностиСредний
Время на прочтение21 мин
Просмотры15K

Логотип WebMarkupMin


В начале 2012 года я работал над серией статей о клиентской оптимизации в ASP.NET MVC для журнала MSDeveloper.RU. Всего было опубликовано 2 статьи: «Сжатие JS- и CSS-файлов» и «Менеджеры ресурсов», но в моих планах было написать еще 2 статьи: одну про оптимизацию графики, а вторую про минимизацию HTML-разметки и GZIP/Deflate-сжатие (далее просто HTTP-сжатие). К сожалению, эти планы не удалось воплотить в жизнь из-за нехватки свободного времени (в тот момент, я запускал проект Bundle Transformer) и последовавшего закрытия журнала.


Но недавно я решил вернуться к теме оптимизации HTML-разметки. После небольшого исследования я понял, что под .NET практически не существует полноценных HTML-минимизаторов. Все существующие .NET-решения производят лишь 2 операции: удаление ненужных пробельных символов и удаление HTML-комментариев, из-за чего они очень сильно проигрывают решениям с других платформ. Поэтому я решил написать собственный HTML-минимизатор для .NET, о котором и пойдет речь в данной статье.


Эволюция HTML-минимизаторов


Прежде чем приступить к описанию своего проекта, я хотел бы немного рассказать о почти 15-летней истории HTML-минимизации и эволюции программный средств, автоматизирующих данный процесс.


Вопреки расхожему мнению, техники минимизации HTML-кода появились намного раньше, чем аналогичные техники для JavaScript. Уже в конце 1998 года Артемий Лебедев в 17-м параграфе ководства «Паранойя оптимизатора» описывал некоторые техники минимизации HTML-кода.


Читать дальше →

Вклад авторов