SlideShare a Scribd company logo
1 of 206
Download to read offline
GPU CPU
Memoryleak
FPS
Cache
Heap
Garbagecollecting
Treatortreat
Calculations
Allocation
ClosureRAM
DOM
CanvasLazyloading
Ondemand
Freeze
Feedback
Generatorfunctions
yield
spinner
disabledcontrols
errors
handling
Throttle
debounce
reflow
recalculate
BOM
RAM
Generatorfunctions
DOM
FPSspinner reflow
yield
ocation
Feed
BOM
arbagecollecting
errors
FPS
handling
Lazyloa
collecting
atorfunctions
Closure
Memoryleak
DOM
yield
Heap
ding
reflow
Если ваш сайт тормозит:

1. забудьте про память (до поры)

2. разгрузите процессор

3. прикиньтесь, что так и должно быть
Игорь Алексеенко, училка в Академии HTML
Никто не любит тормоза

в интерфейсе 👿
Хороший сценарий
Хороший сценарий
• неприятные впечатления от сайта:
Хороший сценарий
• неприятные впечатления от сайта:
• неправильное прицеливание в играх
Хороший сценарий
• неприятные впечатления от сайта:
• неправильное прицеливание в играх
• заметные задержки в анимации
Плохой сценарий
Плохой сценарий
• ошибки при важных операциях
Плохой сценарий
• ошибки при важных операциях
• повторная отправка данных (например, при оплате)
Плохой сценарий
• ошибки при важных операциях
• повторная отправка данных (например, при оплате)
• неотправка данных
Плохой сценарий
• ошибки при важных операциях
• повторная отправка данных (например, при оплате)
• неотправка данных
• уход пользователей
Плохой сценарий
• ошибки при важных операциях
• повторная отправка данных (например, при оплате)
• неотправка данных
• уход пользователей
• потеря денег компанией
Плохой сценарий
• ошибки при важных операциях
• повторная отправка данных (например, при оплате)
• неотправка данных
• уход пользователей
• потеря денег компанией
• увольнение
Что такое тормоза?
(по-английски lag — задержка) Непредсказуемые задержки
в обратной связи в интерфейсе: рывки и замирания
Взаимодействие с пользователем
дискретно
Дискретное взаимодействие
Дискретное взаимодействие
• анимация
Дискретное взаимодействие
• анимация
• прокрутка
Дискретное взаимодействие
• анимация
• прокрутка
• взаимодействие с элементами страницы
Дискретное взаимодействие
• анимация
• прокрутка
• взаимодействие с элементами страницы
• нажатия на кнопки
Дискретное взаимодействие
• анимация
• прокрутка
• взаимодействие с элементами страницы
• нажатия на кнопки
• ввод текста
Дискретное взаимодействие
• анимация
• прокрутка
• взаимодействие с элементами страницы
• нажатия на кнопки
• ввод текста
• перетаскивание
Event L p∞
Event L p∞
Event L p
бесконечный цикл, который после выполнения всех
инструкций продолжает работать и ждет поступления
новых асинхронных команд
∞
Event L p
бесконечный цикл, который после выполнения всех
инструкций продолжает работать и ждет поступления
новых асинхронных команд
EventLoop синхронизируется со скроллом, перерисовкой
DOM, всеми асинхронными операциями и т. д.
∞
Event L p
бесконечный цикл, который после выполнения всех
инструкций продолжает работать и ждет поступления
новых асинхронных команд
EventLoop синхронизируется со скроллом, перерисовкой
DOM, всеми асинхронными операциями и т. д.
Чтобы запустить код в начале кадра нужно передать
его как коллбэк в функцию requestAnimationFrame
∞
Event L p
бесконечный цикл, который после выполнения всех
инструкций продолжает работать и ждет поступления
новых асинхронных команд
EventLoop синхронизируется со скроллом, перерисовкой
DOM, всеми асинхронными операциями и т. д.
Чтобы запустить код в начале кадра нужно передать
его как коллбэк в функцию requestAnimationFrame
кадр
~16 мсек на Mac OS (60 FPS)

но это неточно
∞
Откуда берутся тормоза
вычисления процессора занимают больше одного кадра
отрисовки и пользователь это замечает
Откуда берутся тормоза?
кадр
Откуда берутся тормоза?
кадр
задержка (лаг, lag)
вычисления занимают больше одного кадра

и при взаимодействии видны рывки
Откуда берутся тормоза?
кадр
Откуда берутся тормоза?
кадр
зависание (фриз, freeze)
вычисления не прекращаются, взаимодействие
невозможно
⚖
Процессор Память
используется для хранения

вычисленных значений
используется для мгновенных

вычислений
Память
Запомнить результат вычислений
Запомнить результат вычислений
• объект Math помнит популярные результаты вычислений
(Пи, E, логарифм 10, корень из 2)
Запомнить результат вычислений
• объект Math помнит популярные результаты вычислений
(Пи, E, логарифм 10, корень из 2)
• таблицы синусов и косинусов, рассчитанные на этапе
компиляции в старых играх
Запомнить результат вычислений
• объект Math помнит популярные результаты вычислений
(Пи, E, логарифм 10, корень из 2)
• таблицы синусов и косинусов, рассчитанные на этапе
компиляции в старых играх
• заранее просчитанные анимации
Запомнить результат вычислений
кадр
Запомнить результат вычислений
кадр
получение уже известного

результата почти 

не занимает времени
Что хранится в памяти
Что хранится в памяти
• все конструкции языка

переменные, значения, функции
Что хранится в памяти
• все конструкции языка

переменные, значения, функции
• данные программы

загруженная информация, созданные объекты
Что хранится в памяти
• все конструкции языка

переменные, значения, функции
• данные программы

загруженная информация, созданные объекты
• DOM-дерево

для каждого элемента на странице создается
соответствующий JS-объект (даже для переносов
и комментариев)
Что хранится в памяти
• все конструкции языка

переменные, значения, функции
• данные программы

загруженная информация, созданные объекты
• DOM-дерево

для каждого элемента на странице создается
соответствующий JS-объект (даже для переносов
и комментариев)
• …
в неожиданные моменты времени происходит сборка
мусора или происходит утечка памяти, которая засоряет
память лишними объектами
Почему тормозит память
Почему тормозит память
Почему тормозит память
• сборка мусора
Почему тормозит память
• сборка мусора
• утечки
Профилирование
Профилирование
• таймлайн:
Профилирование
• таймлайн:
• частота кадров
Профилирование
• таймлайн:
• частота кадров
• загруженность процессора
Профилирование
• таймлайн:
• частота кадров
• загруженность процессора
• скриншот
Профилирование
• таймлайн:
• частота кадров
• загруженность процессора
• скриншот
• память
Профилирование
• таймлайн:
• частота кадров
• загруженность процессора
• скриншот
• память
• детальная статистика
Тестовый DOM
Тестовый DOM
• пять страниц по 5000 котиков
Тестовый DOM
• пять страниц по 5000 котиков
• страницы переключаются
с помощью пагинатора
Тестовый DOM
let i = pageSize;
while (i--) {
const el = templateElement.cloneNod
el.querySelector(`.pic-thumb`).src
el.querySelector(`.pic-like-counter
Math.random() * 90) + 10;
yield el;
}
Тестовый DOM
• элементы создаются из
шаблона let i = pageSize;
while (i--) {
const el = templateElement.cloneNod
el.querySelector(`.pic-thumb`).src
el.querySelector(`.pic-like-counter
Math.random() * 90) + 10;
yield el;
}
Тестовый DOM
• элементы создаются из
шаблона
• заполняются случайными
данными (нет кеширования)
let i = pageSize;
while (i--) {
const el = templateElement.cloneNod
el.querySelector(`.pic-thumb`).src
el.querySelector(`.pic-like-counter
Math.random() * 90) + 10;
yield el;
}
Тестовый DOM
• элементы создаются из
шаблона
• заполняются случайными
данными (нет кеширования)
• добавляются в один фрагмент
(DocumentFragment)
for (const el of pageSwitcher.next().
fragment.appendChild(el);
}
Тестовый DOM
страницы переключаются
простой очисткой контейнера
container.innerHTML = '';
Сборка мусора
(Garbage Colleccon, GC) процесс удаления неиспользуемых
объектов из памяти. В JS начинается автоматически,
когда движок понимает, что свободная память
закончилась и нужно освободить место
Сборка мусора —
Сборка мусора
Сборка мусора
• когда память, выделенная под
вкладку заканчивается,
включается механизм GC
Сборка мусора
• когда память, выделенная под
вкладку заканчивается,
включается механизм GC
• процесс сборки мусора
автоматический: предсказать
его начало невозможно
Сборка мусора
• когда память, выделенная под
вкладку заканчивается,
включается механизм GC
• процесс сборки мусора
автоматический: предсказать
его начало невозможно
• в некоторых случаях GC может
работать очень медленно
Сборка мусора
• когда память, выделенная под
вкладку заканчивается,
включается механизм GC
• процесс сборки мусора
автоматический: предсказать
его начало невозможно
• в некоторых случаях GC может
работать очень медленно
Сборка мусора
• когда память, выделенная под
вкладку заканчивается,
включается механизм GC
• процесс сборки мусора
автоматический: предсказать
его начало невозможно
• в некоторых случаях GC может
работать очень медленно
Суммарно сборка
мусора заняла ~10 кадров
при частоте 60 FPS
Утечка памяти
ситуация, когда при сборке мусора, некоторые
неиспользуемые объекты остаются в памяти, потому
что сборщик мусора считает, что они могут
использоваться
Утечка памяти —
Утечка памяти
const switchPage = (pageSwitcher, pag
container.innerHTML = '';
for (const el of pageSwitcher.next(
document.addEventListener('keydow
evt.stopPropagation();
console.log(el, Math.random());
});
container.appendChild(el);
}
};
Утечка памяти
const switchPage = (pageSwitcher, pag
container.innerHTML = '';
for (const el of pageSwitcher.next(
document.addEventListener('keydow
evt.stopPropagation();
console.log(el, Math.random());
});
container.appendChild(el);
}
};
• после удаления ноды, GC не
может определить, что
обработчик на документе не
используется и не удаляет его
Утечка памяти
const switchPage = (pageSwitcher, pag
container.innerHTML = '';
for (const el of pageSwitcher.next(
document.addEventListener('keydow
evt.stopPropagation();
console.log(el, Math.random());
});
container.appendChild(el);
}
};
• после удаления ноды, GC не
может определить, что
обработчик на документе не
используется и не удаляет его
• обработчик через замыкание
использует DOM-ноду, поэтому
она тоже не удаляется из
памяти
Утечка памяти
• после удаления ноды, GC не
может определить, что
обработчик на документе не
используется и не удаляет его
• обработчик через замыкание
использует DOM-ноду, поэтому
она тоже не удаляется из
памяти
—Брендан Айк, создатель JS в одном из недавних подкастов
…it is a garbage garbage-collected language. It has performance uncertainty.
Performance unpredictability is one way to put it, where you may be giving something
at 60 frames a second for a game and suddenly, you run out of real-cme because of a
garbage colleccon that has to happen to reclaim memory
https://softwareengineeringdaily.com/2017/03/31/webassembly-with-brendan-eich/
тормоза, связанные с памятью могут происходить и при
записи в неё значений и при её автоматической очистке.
Прогнозировать момент возникновения тормозов очень
сложно
Память ненадежна
Процессор
Как ускорить работу процессора
Как ускорить работу процессора
• уменьшить объем вычислений
Как ускорить работу процессора
• уменьшить объем вычислений
• затротлить
Как ускорить работу процессора
• уменьшить объем вычислений
• затротлить
Как ускорить работу процессора
• уменьшить объем вычислений
• затротлить
• воспользоваться другими инструментами расчёта
Уменьшение объема вычислений
Динамическая прокрутка
показывать пользователю
только те элементы, которые
находятся в его поле зрения.
Остальные элементы
отрисовывать по мере
необходимости
Первая страница на 5000 элементов
Первая страница на 5000 элементов
• полная отрисовка заняла
четыре секунды
Первая страница на 5000 элементов
• полная отрисовка заняла
четыре секунды
• пользователь увидел хоть
что-то через две с
половиной секунды
Первая страница на 5000 элементов
• полная отрисовка заняла
четыре секунды
• пользователь увидел хоть
что-то через две с
половиной секунды
• пользователь увидел
контент почти через три
с половиной секунды
Первая страница на 100 элементов
Первая страница на 100 элементов
• полная отрисовка
произошла меньше
чем за полсекунды
Первая страница на 100 элементов
• полная отрисовка
произошла меньше
чем за полсекунды
• пользователь увидел
результаты сразу как только
появился контент, не было
дополнительной загрузки,
это заняло четверть секнуды
Тротлинг
Тротлинг (пропуск кадров)
Тротлинг (пропуск кадров)
Тротлинг (пропуск кадров)
фактическая 

частота
Тротлинг (пропуск кадров)
фактическая 

частота
достаточная
частота
Тротлинг (пропуск кадров)
фактическая 

частота
достаточная
частота
Проверка положения скролла
по каждому событию скролла
проверяется, не находится ли
пользователь в низу страницы (с
небольшим запасом)
window.onscroll = () => {
if (document.body.scrollTop + wind
document.body.scrollHeight - S
switchPage(pageSwitcher, PAGE_SI
}
};
Прокрутка 100 фоток
Прокрутка 100 фоток
• событие скролла каждые
4 пикселя при высоте
страницы в 1000
Прокрутка 100 фоток
• событие скролла каждые
4 пикселя при высоте
страницы в 1000
• от верха до низа — почти
500 проверок где
находится пользователь
Оптимизированная проверка
let prevComparison = performance.now
window.onscroll = () => {
const now = performance.now();
if (now - prevComparison >= 100) {
if (document.body.scrollTop + wi
document.body.scrollHeight -
switchPage(pageSwitcher, PAGE_
}
prevComparison = now;
}
};
Оптимизированная проверка
• событие скролла происходит
с прежней частотой
let prevComparison = performance.now
window.onscroll = () => {
const now = performance.now();
if (now - prevComparison >= 100) {
if (document.body.scrollTop + wi
document.body.scrollHeight -
switchPage(pageSwitcher, PAGE_
}
prevComparison = now;
}
};
Оптимизированная проверка
• событие скролла происходит
с прежней частотой
• дополнительная нагрузка на
скролл в виде сложных
вычислений производится
не чаще, чем раз в 100 мсек
let prevComparison = performance.now
window.onscroll = () => {
const now = performance.now();
if (now - prevComparison >= 100) {
if (document.body.scrollTop + wi
document.body.scrollHeight -
switchPage(pageSwitcher, PAGE_
}
prevComparison = now;
}
};
Прокрутка 100 фоток — тротл 100 мсек
Прокрутка 100 фоток — тротл 100 мсек
• событие скролла каждые
20-30 пикселей
при высоте страницы
в 1000
Прокрутка 100 фоток — тротл 100 мсек
• событие скролла каждые
20-30 пикселей
при высоте страницы
в 1000
• 100 проверок где
находится пользователь
Отдать вычисления
Отдать вычисления
Отдать вычисления
• на видеокарту (canvas)
Отдать вычисления
• на видеокарту (canvas)
• на сервер
Отдать вычисления
• на видеокарту (canvas)
• на сервер
• в другой поток (ServiceWorker)
Отдать на видеокарту
почему браузерные игры делают не на SVG
SVG canvas
SVG
• все элементы хранятся в
памяти, даже незначительные
canvas
SVG
• все элементы хранятся в
памяти, даже незначительные
• все отрисовывается сразу и все
объекты превращаются в набор
пикселей (не используется память для
долгосрочного хранения элементов)
canvas
SVG
• все элементы хранятся в
памяти, даже незначительные
• все отрисовывается сразу и все
объекты превращаются в набор
пикселей (не используется память для
долгосрочного хранения элементов)
• для хранения данных нужно
использовать отдельные структуры,
которые можно оптимизировать под
задачу
canvas
SVG
• все элементы хранятся в
памяти, даже незначительные
• с каждым элементом можно
взаимодействовать: изменять
после отрисовки, анимировать,
описывать пользовательское
взаимодействие, обновлять
по одиночке
• все отрисовывается сразу и все
объекты превращаются в набор
пикселей (не используется память для
долгосрочного хранения элементов)
• для хранения данных нужно
использовать отдельные структуры,
которые можно оптимизировать под
задачу
canvas
SVG
• все элементы хранятся в
памяти, даже незначительные
• с каждым элементом можно
взаимодействовать: изменять
после отрисовки, анимировать,
описывать пользовательское
взаимодействие, обновлять
по одиночке
• все отрисовывается сразу и все
объекты превращаются в набор
пикселей (не используется память для
долгосрочного хранения элементов)
• для хранения данных нужно
использовать отдельные структуры,
которые можно оптимизировать под
задачу
• низкоуровневое API: из коробки нет
стилизации, взаимодействия с
пользователем, анимации, работы
с отдельными элементами
canvas
SVG
• все элементы хранятся в
памяти, даже незначительные
• с каждым элементом можно
взаимодействовать: изменять
после отрисовки, анимировать,
описывать пользовательское
взаимодействие, обновлять
по одиночке
• видеокарта используется не на
полную: параметры элементы
высчитываются на процессоре
и только потом отрисовываются
через видеокарту
• все отрисовывается сразу и все
объекты превращаются в набор
пикселей (не используется память для
долгосрочного хранения элементов)
• для хранения данных нужно
использовать отдельные структуры,
которые можно оптимизировать под
задачу
• низкоуровневое API: из коробки нет
стилизации, взаимодействия с
пользователем, анимации, работы
с отдельными элементами
canvas
SVG
• все элементы хранятся в
памяти, даже незначительные
• с каждым элементом можно
взаимодействовать: изменять
после отрисовки, анимировать,
описывать пользовательское
взаимодействие, обновлять
по одиночке
• видеокарта используется не на
полную: параметры элементы
высчитываются на процессоре
и только потом отрисовываются
через видеокарту
• все отрисовывается сразу и все
объекты превращаются в набор
пикселей (не используется память для
долгосрочного хранения элементов)
• для хранения данных нужно
использовать отдельные структуры,
которые можно оптимизировать под
задачу
• низкоуровневое API: из коробки нет
стилизации, взаимодействия с
пользователем, анимации, работы
с отдельными элементами
• вся отрисовка происходит на
видеокарте
canvas
Покрутим земной шар
Покрутим земной шар
• 800×600
Покрутим земной шар
• 800×600
• все страны описаны
через один контур (path)
Покрутим земной шар
• 800×600
• все страны описаны
через один контур (path)
• частоту кадров
определяет сам браузер
(requestAnimaconFrame)
Покрутим земной шар
• 800×600
• все страны описаны
через один контур (path)
• частоту кадров
определяет сам браузер
(requestAnimaconFrame)
• один оборот на 360º
по градусу за кадр
canvas
для отрисовки
используется
только GPU
canvas
для отрисовки
используется
только GPU
в среднем время
выполнения 6—6,5 сек 

(360 frames / ~6 sec = ~60 FPS)
SVG
сначала параметры нод
рассчитываются процессором
как узлы DOM-дерева
SVG
сначала параметры нод
рассчитываются процессором
как узлы DOM-дерева
в среднем время
выполнения 8 сек 

(360 frames / ~8 sec = ~45 FPS)
SVG
сначала параметры нод
рассчитываются процессором
как узлы DOM-дерева
в среднем время
выполнения 8 сек 

(360 frames / ~8 sec = ~45 FPS)
To obviate flicker from white
light projected on a bright
surface requires about
48 obscuracons per second
—
Эдисон,

который с лампочкой
💡
Странный тест на утечку
Странный тест на утечку
при вызове каждого
последующего кадра
«забыта» очистка
предыдущего: следующее
состояние рисуется поверх
canvas
результаты не
изменились — 6 сек,
~60 FPS
SVG
SVG
• полная длительность анимации
составила 24 минуты
SVG
• полная длительность анимации
составила 24 минуты
• DevTools хрома вылетели
с ошибкой, потому что не
смогли разобрать лог
профайлера
SVG
• полная длительность анимации
составила 24 минуты
• DevTools хрома вылетели
с ошибкой, потому что не
смогли разобрать лог
профайлера
Отдать вычисления на сервер
Задача: тепловая карта
Задача: тепловая карта
• шаг обновления
данных — 1px
Задача: тепловая карта
• шаг обновления
данных — 1px
• полная перерисовка после
каждого изменения
состояния карты (заново
создавать все canvas)
Задача: тепловая карта
• шаг обновления
данных — 1px
• полная перерисовка после
каждого изменения
состояния карты (заново
создавать все canvas)
• отсутствие интерактивного
взаимодействия: данные
статичны
Решение на canvas
Решение на canvas
• с нуля написанный код —
нет готовых хороших
библиотек для создания
тепловых карт
Решение на canvas
• с нуля написанный код —
нет готовых хороших
библиотек для создания
тепловых карт
• большие вычисления
приводят к одинаковому
результату — тепловая карта
не меняется со временем
Запрос изображений с сервера
Запрос изображений с сервера
• изображения сгенерированы
с помощью библиотеки
визуализации для Python
Запрос изображений с сервера
• изображения сгенерированы
с помощью библиотеки
визуализации для Python
• изображения хранятся
на сервере и не создаются
повторно для каждого
использования
Запрос изображений с сервера
• изображения сгенерированы
с помощью библиотеки
визуализации для Python
• изображения хранятся
на сервере и не создаются
повторно для каждого
использования
• кеширование уже
загруженных изображений
в браузере
Отдать в параллельный поток
Отдать в параллельный поток
редактор ace.js проводит
проверку синтаксиса
загруженного файла. Чтобы
не тормозить основные
вычисления (работа с
редактором), проверка
производится в
параллельном потоке
Отдать вычисления
Отдать вычисления
• измените рендерер d3.js на канвас
Отдать вычисления
• измените рендерер d3.js на канвас
• много запросов — не всегда плохо, иногда они работают
быстрее, чем вычисления на клиенте
Отдать вычисления
• измените рендерер d3.js на канвас
• много запросов — не всегда плохо, иногда они работают
быстрее, чем вычисления на клиенте
• сложные оверлеи на картах Google лучше сделать один
раз на сервере картинками
Отдать вычисления
• измените рендерер d3.js на канвас
• много запросов — не всегда плохо, иногда они работают
быстрее, чем вычисления на клиенте
• сложные оверлеи на картах Google лучше сделать один
раз на сервере картинками
• то, что можно посчитать параллельно, отдайте в Worker
Что делать, если 

оптимизировать невозможно
Если оптимизировать невозможно
Если оптимизировать невозможно
• использовать обратную связь (спиннеры, заблокированные
кнопки)
Если оптимизировать невозможно
• использовать обратную связь (спиннеры, заблокированные
кнопки)
• использовать особенности восприятия (приветственный
экран Apple — муляж, фотография последнего экрана)
Правильная обратная связь
Обратная связь курильщика
100
Обратная связь курильщика
100
Обратная связь курильщика
101
Обратная связь курильщика
GET http: //localhost/ 500 Internal Server Err…
101
Обратная связь курильщика
GET http: //localhost/ 500 Internal Server Err…
101
Some error happened
Обратная связь здорового человека
100
Обратная связь здорового человека
100
Обратная связь здорового человека
100
Обратная связь здорового человека
GET http: //localhost/ 500 Internal Server Err…
100
Обратная связь здорового человека
GET http: //localhost/ 500 Internal Server Err…
100
Обратная связь здорового человека
GET http: //localhost/ 500 Internal Server Err…
100Что-то пошло не так и ваш голос не зачёлся
Обратная связь курильщика: 2
Месть обратной связи
Очень остроумный коммент| OK
Обратная связь курильщика: 2
Месть обратной связи
Очень остроумный коммент| OK — Клик!
Обратная связь курильщика: 2
Месть обратной связи
Очень остроумный коммент| OK
Обратная связь курильщика: 2
Месть обратной связи
Очень остроумный коммент| OK
— Клик!
Обратная связь курильщика: 2
Месть обратной связи
Очень остроумный коммент| OK
Обратная связь курильщика: 2
GET http: //localhost/ 204
Месть обратной связи
Очень остроумный коммент| OK
Очень остроумный коммент
Обратная связь курильщика: 2
GET http: //localhost/ 204
Месть обратной связи
GET http: //localhost/ 204
Очень остроумный коммент| OK
Очень остроумный коммент
Очень остроумный коммент
Обратная связь курильщика: 2
GET http: //localhost/ 204
Месть обратной связи
GET http: //localhost/ 204
Очень остроумный коммент| OK
Очень остроумный коммент
Очень остроумный коммент 👎
👎
Обратная связь здорового человека: 2
Новая надежда
Очень остроумный коммент| OK
Обратная связь здорового человека: 2
Новая надежда
Очень остроумный коммент| OKOK — Клик!
Обратная связь здорового человека: 2
Новая надежда
Очень остроумный коммент| OKOK
Обратная связь здорового человека: 2
GET http: //localhost/ 204
Новая надежда
Очень остроумный коммент| OK
Очень остроумный коммент
Обратная связь здорового человека: 2
GET http: //localhost/ 204
Новая надежда
Очень остроумный коммент| OK
Очень остроумный коммент 👍
Обратная связь здорового человека: 2
GET http: //localhost/ 204
Новая надежда
Очень остроумный коммент| OK
Очень остроумный коммент 👍
Очень остроумно!
Скриншот
Mac OS во время загрузки
чтобы создать впечатление
мгновенной инициализации
ОС, Mac показывает
скриншот последнего
состояния страницы,
а в фоне производит
необходимые вычисления
Динамическая прокрутка
если элементы не успели
прорисоваться при быстрой
прокрутке, можно показать
их муляжи, которые при
остановке скролла
заменятся на настоящие
Алгоритм оптимизации
Алгоритм оптимизации
1. Уменьшить нагрузку на процессор
Алгоритм оптимизации
1. Уменьшить нагрузку на процессор
1. использовать меньше памяти
Алгоритм оптимизации
1. Уменьшить нагрузку на процессор
1. использовать меньше памяти
2. проверить частоту кадров, вероятно её можно снизить
Алгоритм оптимизации
1. Уменьшить нагрузку на процессор
1. использовать меньше памяти
2. проверить частоту кадров, вероятно её можно снизить
3. использовать все возможные ресурсы для расчётов
Алгоритм оптимизации
1. Уменьшить нагрузку на процессор
1. использовать меньше памяти
2. проверить частоту кадров, вероятно её можно снизить
3. использовать все возможные ресурсы для расчётов
2. Добавить обратную связь в интерфейс
Алгоритм оптимизации
1. Уменьшить нагрузку на процессор
1. использовать меньше памяти
2. проверить частоту кадров, вероятно её можно снизить
3. использовать все возможные ресурсы для расчётов
2. Добавить обратную связь в интерфейс
3. Начать оптимизацию памяти 👋
👏 Спасибо!
o0.github.io
латинская «о», ноль

More Related Content

What's hot

Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примереSergey Xek
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на productionNikolay Sivko
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)Ontico
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Ontico
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
Введение в Akka
Введение в AkkaВведение в Akka
Введение в AkkaZheka Kozlov
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruAlex Chistyakov
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQLAlex Chistyakov
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Ontico
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014Alex Chistyakov
 
Salt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systemsSalt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systemsAlex Chistyakov
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
Крадущийся сервер, затаившийся диод (Андрей Аксенов)
Крадущийся сервер, затаившийся диод (Андрей Аксенов)Крадущийся сервер, затаившийся диод (Андрей Аксенов)
Крадущийся сервер, затаившийся диод (Андрей Аксенов)Ontico
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей ФедоровCodeFest
 

What's hot (20)

Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
 
мир без Jsp. thymeleaf 2.0
мир без Jsp. thymeleaf 2.0мир без Jsp. thymeleaf 2.0
мир без Jsp. thymeleaf 2.0
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
Async Python
Async PythonAsync Python
Async Python
 
Введение в Akka
Введение в AkkaВведение в Akka
Введение в Akka
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ru
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
 
Salt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systemsSalt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systems
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Крадущийся сервер, затаившийся диод (Андрей Аксенов)
Крадущийся сервер, затаившийся диод (Андрей Аксенов)Крадущийся сервер, затаившийся диод (Андрей Аксенов)
Крадущийся сервер, затаившийся диод (Андрей Аксенов)
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 

Similar to Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)

«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...it-people
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo Development
 
Yeoman generator своими руками
Yeoman generator своими рукамиYeoman generator своими руками
Yeoman generator своими рукамиchaykaborya
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, BadooOntico
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
Попасть в мишень
Попасть в мишеньПопасть в мишень
Попасть в мишеньAnton Ignatov
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потаповrit2010
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потаповrit2010
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Andrew Minkin
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Mad Devs
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Badoo Development
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Ontico
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустяYuriy Nasretdinov
 
Interactive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DInteractive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DDevGAMM Conference
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаSergey Platonov
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
 
Там, где Rails не справляются
Там, где Rails не справляютсяТам, где Rails не справляются
Там, где Rails не справляютсяMax Lapshin
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИСYandex
 

Similar to Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy) (20)

«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
Yeoman generator своими руками
Yeoman generator своими рукамиYeoman generator своими руками
Yeoman generator своими руками
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
Попасть в мишень
Попасть в мишеньПопасть в мишень
Попасть в мишень
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потапов
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потапов
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
Interactive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DInteractive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3D
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладка
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Там, где Rails не справляются
Там, где Rails не справляютсяТам, где Rails не справляются
Там, где Rails не справляются
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
 

Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)