Обновить
49.13

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

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

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

Я хочу, чтобы сайты открывались мгновенно

Время на прочтение10 мин
Охват и читатели141K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Я расскажу, как сделать так, чтобы ваш сайт открывался быстро. Очень быстро.


Я хочу, чтобы мой сайт открывался быстро

Измерение производительности функций в JavaScript

Время на прочтение7 мин
Охват и читатели38K


Производительность всегда играла ключевую роль в программном обеспечении. А в веб-приложениях её значение ещё выше, поскольку пользователи легко могут пойти к конкурентам, если сделанный вами сайт работает медленно. Любой профессиональный веб-разработчик должен об этом помнить. Сегодня по-прежнему можно успешно применять массу старых приёмов оптимизации производительности, вроде минимизации количества запросов, использования CDN и не использования для рендеринга блокирующего кода. Но чем больше разработчики применяют JavaScript, тем важнее становится задача оптимизации его кода.
Читать дальше →

Приглашаем на встречу по web-разработке 2 декабря

Время на прочтение2 мин
Охват и читатели6.8K


В среду, 2 декабря, мы приглашаем frontend-разработчиков в наш московский офис, чтобы поделиться опытом и обсудить нюансы работы. Разработчики проектов Почта и Главная страница расскажут, как в Mail.Ru Group оптимизируют код клиентской части приложений, с какими особенностями внедрения компонентного подхода они столкнулись и какие инструменты использовали. Гостей также ждет мастер-класс, на котором спикеры продемонстрируют способы ускорения процесса разработки, поддержки и интеграции.
Читать дальше →

Подготовка библиотек FMOD, Cocos2D-x, OpenAL и OpenSSL для Android-устройств, построенных на платформе Intel

Время на прочтение15 мин
Охват и читатели8K
Ни один серьёзный Android-проект не обходится без сторонних библиотек. Иногда их можно найти в пригодном для целевой архитектуры виде, иногда – нет. Тогда библиотеки приходится готовить самостоятельно, например, собирая из исходного кода.



Из этого практического руководства вы узнаете о библиотеках FMOD, Cocos2D-x, OpenAL и OpenSSL для Android-устройств, построенных на платформе x86. Они, в особенности – первые три, пригодятся тем, кто разрабатывает игры и мультимедийные приложения. А именно, мы поговорим об их настройке, компиляции и использовании в Android-приложениях.
Читать дальше →

Moff.js и модулированный Bootstrap

Время на прочтение3 мин
Охват и читатели9.5K
Moff.js and Bootstrap

В предыдущей статье я писал о том, как фреймворк Moff.js может облегчить создание Mobile First страницы без использования CSS фреймворка.

Но на сегодняшний день большенство проектов используют какие либо CSS фреймворки и одним из таких фреймворков является Bootstrap. Смело можно утверждать, что Bootstrap является самым популярным Mobile First фреймворком.

Cамым большим недостатоком этого фреймворка является его размер. Даже минифицированная версия весит 154.9KB и это только CSS и JS файлы.

Зачастую разработчикам нужна только часть функционала, но подключают они весь фреймворк целиком. И поэтому пользователям мобильных устройств приходится загружать большой объем лишнего трафика. Решением этой проблемы было разделение фреймворка на группы из часто и не часто используемых модулей, которые удобно использовать в Mobile First подходе. Каждая из этих групп была вынесена в виде отдельного модуля в Moff.
Читать дальше →

Зачем голосовому Поиску Google нейронные сети?

Время на прочтение5 мин
Охват и читатели33K
Задумывались ли вы когда-нибудь, как работает голосовой поиск? Какая магия переводит ваши слова в поисковый запрос, причём практически в режиме реального времени? Сегодня мы расскажем, как «О’кей, Google!» стал ближе к вам на 300 миллисекунд и что именно позволяет вам разговаривать с вашим телефоном простым человеческим языком.

В основе актуальной версии голосового поиска Google лежит улучшенный алгоритм для обучения нейронных сетей, созданный специально для анализа и распознавания акустических моделей. В основу новых, Рекуррентных Нейронных Сетей (англ.: recurrent neural networks — RNN), легли Нейросетевая темпоральная классификация (англ.: Connectionist Temporal Classification — CTC) и дискриминантный анализ для последовательностей, адаптированный для обучения подобных структур. Данные RNN намного точнее, особенно в условиях посторонних шумов, а главное — они работают быстрее, чем все предыдущие модели распознавания речи.
Читать дальше →

Как нам удалось построить видеохостинг за 1¢/ГБ

Время на прочтение4 мин
Охват и читатели26K

Почему видеохостинг такой дорогой


Из всех видов статических файлов, используемых на веб-сайтах, с видеороликами связаны наиболее жёсткие требования к хостингу:

  • Стили, картинки и особенно скрипты задерживают время готовности страницы к использованию, поэтому важно время отклика. С другой стороны, размеры таких файлов обычно невелики, кэшируемость хорошая, частичная загрузка не важна.
  • Видеофайлы имеют большие размеры, кэшируемость плохая (большинство зрителей смотрят конкретный ролик впервые), при этом пользователь может захотеть посмотреть произвольную часть видео. С другой стороны, важна быстрота доставки, чтобы ролик можно было смотреть без перерывов на буферизацию.
  • Загружаемое программное обеспечение имеет сравнительно большие размеры, однако скорость доставки не так критична, как в случае видео.

Аренда серверов для видеохостинга в США значительно дешевле (за исходящий гигабайт), чем во многих других странах. Однако доставка видео с американских серверов на другие континенты редко бывает достаточно быстрой, чтобы фильм можно было смотреть без перерывов на буферизацию, и чтобы время ожидания перед началом воспроизведения было приемлемым. Поэтому хозяевам сайтов с видеороликами, выходящих на международную аудиторию, приходится арендовать местные сервера в разных частях света поближе к своим пользователям. Показ ролика пользователю из России, например, обходится типичному видеосайту в несколько раз дороже, чем показ того же ролика американцу. Приходится или дороже платить, или снижать качество видео для зарубежных зрителей. Вот и выходи после этого на международный рынок.

Чтобы решить эту проблему, нам пришлось сделать софт умнее.


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

Секция о клиентском программировании на HighLoad++

Время на прочтение1 мин
Охват и читатели18K

Не знаю, как вы, но я застал время, когда фронтенда еще не было. Большинство макетов программисты могли сверстать самостоятельно, ну что там сложного:
Читать дальше →

Почему Mobile First?

Время на прочтение8 мин
Охват и читатели124K
О Mobile First написано достаточно много и есть хорошие книги на эту тему. И все равно большинство разработчиков и компаний не используют его в своих проектах или не знают вообще об этом подходе.

Поэтому хочу рассказать вам о нем вкратце и с примерами, это будет полезной информацией для тех кто не слышал об этом подходе.
Я постараюсь ответить на три основных вопроса:

  • Что такое Mobile First и его плюсы
  • Реализация подхода
  • Статистика результатов
Читать дальше →

Избавляемся от Амиго, MailUpdater, Яндекс.Браузер и прочего

Время на прочтение2 мин
Охват и читатели96K
Вся история заключается в том, что запретить установку программ в домене средствами GPO в принципе можно, и в таком случае при установке будет запрошен логин/пароль учетной записи с нужными правами. Но вот незадача — программы вроде указанных в названии статьи (+менеджер браузеров, Unity Player и прочее) устанавливаются в папку пользователя и успешно работают в системе. Найден очень простой (статья всего на 1 страничку) способ избавиться от Амиго раз и навсегда! Кому интересно, прошу под кат.
Подробности

Проектирование программного обеспечения

Время на прочтение5 мин
Охват и читатели140K
Если бы мы запланировали статью, которая не будет никому интересна, то наверное написали про важность проектирования зданий перед их постройкой. Но, к счастью, любой человек понимает, почему не стоит строить дома на глазок, добавляя фичи прямо в процессе строительства. При разработке же программного обеспечения по-прежнему полезно напоминать о том, что начинать её следует с проектирования — т.е. с полного планирования того, что непосредственно нам придётся разрабтывать, в какие сроки, с какими исходными данными и ожидаемым результатом.



За 13 лет опыта компании «Эдисон» в аутсорс-разработке для средних и крупных компаний из России, США, Европы и Австралии мы выработали собственную схему проектирования ПО, о которой в этом посте и расскажем.
Читать дальше →

Яндекс.Блоги — мы подумаем за вас

Время на прочтение3 мин
Охват и читатели11K

Очередная глава остросюжетного триллера об оптимизации сервисов Яндекса


image

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

В прошлый раз мы обсуждали принудительный выбор вашей локации и соответствующий ей доступ к сервисам компании. Например, если вы определяете свое местоположение в Минске, Беларусь, то Яндекс.Маркет России вы не увидите и прицениться к товарам соседей, до которых 3-4 часа езды из столицы (для джигитов и людей, которые себя не любят, два), вы не сможете.

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

Тотальная мобилизация c MobilizeToday

Время на прочтение10 мин
Охват и читатели7.6K
C апреля 2015 года Google ввёл новый алгоритм ранжирования поисковой выдачи на мобильных устройствах, который в США уже окрестили «мобайлгеддоном». Теперь ресурсы, не имеющие мобильной версии сайта, будут иметь более низкие позиции. При этом поисковик описал требования к мобильным сайтам и даже предложил инструменты для оценки качества и выявления ошибок. Такая политика IT-гиганта неслучайна: мобильные девайсы покорили мир и не сдают позиции.

Согласно исследованию, опубликованному весной 2015 года компанией Яндекс, в конце 2014 года 68% пользователей интернета в российских городах хотя бы раз в месяц выходили в сеть с помощью мобильных устройств (годом ранее – 56%). Мобильные пользователи стали значительной частью аудитории сайтов. За 2014 год доля визитов на сайты со смартфонов и планшетов выросла в полтора раза. Причём со смартфонов в конце 2014 года россияне совершали почти в два раза больше визитов, чем с планшетов, и рост активности также вырос. Если обратиться к мировым трендам, то доля владельцев смартфонов среди пользователей Интернета составляет 80% и рост продолжается.



С мобильных устройств ищут как обычные пользователи, так и бизнес. А значит, настала пора создавать мобильные версии сайтов. Долго, дорого, сложно.
Или нет?

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

Клиентская точка отказа: SPOF за счет внешних JS-библиотек

Время на прочтение4 мин
Охват и читатели8.9K
В стремлении к быстрому сайту многие разработчики упускают один важный момент: клиентскую (фронтендную) точку отказа (frontend SPOF – single point of failure). Причем, почти все инструменты тестирования скорости загрузки сайта также не выявят потенциальных проблем.
Читать дальше →

Числовые типы и контейнеры C++ с точки зрения производительности

Время на прочтение14 мин
Охват и читатели4.9K
Зачастую всем нам приходится иметь дело с обработкой больших объёмов данных. Эта заметка является рассуждением на тему того, какие контейнеры и числовые типы (с учетом различных операций) лучше всего справляются с этой задачей. В книгах иногда встречаются упоминания о том, как с помощью выбора того или иного типа повысить производительность, но при этом не приводятся конкретные цифры.
Читать дальше →

Оптимизация Android-игры mTricks Looting Crown для платформы Intel Atom

Время на прочтение12 мин
Охват и читатели12K
Самая популярная категория мобильных приложений – игры. В былые времена возможности процессоров и графических ускорителей портативных устройств были весьма ограничены, что сказывалось на их производительности. В итоге большинство игр приходилось делать достаточно простыми. Сегодня вычислительные мощности смартфонов и планшетов значительно выросли, а значит, появилась возможность создавать высококачественные, ресурсоёмкие игры. Однако мобильные CPU и GPU всё еще уступают тем, которые устанавливают в персональные компьютеры.

Рост рынка мобильных приложений привёл к тому, что многие производители игр для PC теперь создают игры для мобильных платформ. Однако традиционные подходы к проектированию игр не очень хорошо работают в мобильной среде. То же самое касается и графических ресурсов PC-игр, которые слишком «тяжелы» для мобильного аппаратного обеспечения.



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

Профилирование Android-приложений на потребление аккумулятора

Время на прочтение6 мин
Охват и читатели66K


Думаю, что у каждого пользователя Android рано или поздно возникает необходимость понять, какое приложение за ночь съело всю батарею притом, что телефон лежал с погашенным экраном. Участь найденного виновника не завидна: чаще всего его просто удаляют. Итак, что же сделать, чтобы наши приложения использовали аккумулятор минимально? В статье я постараюсь дать ответ на этот вопрос и рассказать о подходах к уменьшению потребления аккумулятора, которые мне доводилось использовать.
Читать дальше →

Эффективная работа с SQLite на примере ICQ

Время на прочтение9 мин
Охват и читатели30K
Как и во многих других приложениях, нам в мобильном ICQ приходится хранить достаточно много информации: сообщения, контакты и тому подобное. Когда количество запросов к этим данным достигает какого-то критического значения, приложение начинает тормозить. Долгий запуск, медленное открытие чата, медленная отправка сообщений, постоянные спиннеры — все это жутко напрягает. Чаще всего причиной тормозов является неудачная работа с данными. В статье я хочу поделиться нашим опытом рефакторинга структуры данных, оптимизации запросов и некоторыми удобными приемами для миграции.

Несколько слов об исходной задаче. Основная сущность у нас — профиль ICQ, у которого есть список контактов, а у тех есть сообщения. Наше приложение существует уже много лет, разрабатывалось разными людьми с разными подходами, номер версии основной БД уверенно приближался к 30. Кроме того, количество фич в продукте невозможно предсказать заранее, это тоже повлияло на архитектуру. В общем, модель данных изначально была примерно такой:

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

Критический путь рендеринга веб-страниц

Время на прочтение5 мин
Охват и читатели40K
В среде веб-разработчиков все больше распространяется знание о том, что скорость важна. Многие стараются ускориться: используют сжатие gzip, минификацию, кеширующие заголовки, сокращение запросов, оптимизацию картинок и другие.

После выполнения этих рекомендаций возникает вопрос: а что именно мы оптимизируем? Оказывается, что в большинстве случаев это время полной загрузки страницы со всеми элементами. Однако, это не совсем то, что нужно. На самом деле важно время, за которое пользователь получает «первый экран» страницы с важными функциональными элементами (заголовок, текст, описание товара и т.д.) Другими словами, важен момент начала рендеринга страницы. Здесь и возникает критический путь рендеринга, который определяет все действия, которые должен выполнить браузер для начала отрисовки страницы. С этой штукой мы и будем разбираться в статье.
Читать дальше →

Улучшение производительности Python 2.7

Время на прочтение2 мин
Охват и читатели20K

От переводчика: в двух словах, в декабре 2015 выйдет релиз Python 2.7.11, ускоряющий работу интерпретатора CPython до 20%. Ниже перевод статьи с LWN.net, рассказывающей о сути и процессе произошедших изменений в коде. Имена, в произношении которых я не уверен, даны в оригинальном написании. Об ошибках и неточностях перевода просьба, как обычно, сообщать в личные сообщения.

Несмотря на то, что разработка Python 2 (а конкретно ветки Python 2.7.x) находится сейчас в состоянии «никаких новых фич», которое в обычной ситуации заранее ставит крест на любых крупных изменениях, команда разработки приняла решение рассмотреть и принять backport-патч из Python 3, привносящий заметное улучшение производительности интерпретатора.
Читать дальше →

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