Новая Яндекс.Музыка. Особенности разработки iOS-клиента — Сергей Зайцев
Новая Яндекс.Музыка. 
Особенности разработки 
iOS клиента. 
Зайцев Сергей 
Я.Субботник, Новосибирск, 18.10.2014
Каким должен быть хороший кэш картинок? 
Кэширование изображений
Кэширование нужно для ускорения отрисовки картинки 
2000 ms 
13 ms 
27 ms 400 ms 
Загрузка Декодирование Обработка растра 
Измерения проводились при обработке JPEG 700x700 на IPhone 5S, загрузка по 3G. 4
Типовое решение: двухуровневый кэш 
〉Минимальная нагрузка на поток пользователя кэша. 
〉Ограничение на использование памяти и диска. 
〉URL - первичный ключ картинки. 
〉Хэш от URL - уникальная часть в имени файла. 
5
Хорошее решение 
〉Кэширование нескольких вариантов картинки 
(разные размеры, наложение фильтров). 
6
Хорошее решение 
〉Кэширование нескольких вариантов картинки (разные 
размеры, наложение фильтров). 
〉Управление количеством одновременно 
загружаемых и обрабатываемых картинок. 
! 
! 
7
Хорошее решение 
〉Кэширование нескольких вариантов картинки (разные 
размеры, наложение фильтров). 
〉Управление количеством одновременно загружаемых 
и обрабатываемых картинок. 
〉По-настоящему уникалные имена файлов. 
! 
8
Хорошее решение 
〉Кэширование нескольких вариантов картинки (разные 
размеры, наложение фильтров). 
〉Управление количеством одновременно загружаемых 
и обрабатываемых картинок. 
〉Не использовать хэш в качестве имени файла. 
〉Обновление картинок. 
9
Кэшируем обработанные картинки, если 
〉На клиенте генерируется несколько вариантов 
картинки. 
10
Кэшируем обработанные картинки, если 
〉На клиенте генерируется несколько вариантов 
картинки. 
〉Устройство не успевает обработать картинку 
”на лету”. 
11
Кэшируем обработанные картинки, если 
〉На клиенте генерируется несколько вариантов 
картинки. 
〉Устройство не успевает обработать картинку ”на 
лету”. 
〉Обработанная картинка будет многократно 
использована. 
12
Варианты реализации обновления 
〉Сервер генерирует уникальные URL для новых 
картинок. 
13
Варианты реализации обновления 
〉Сервер генерирует уникальные URL для новых картинок. 
〉 Клиент проверяет установленные сервером HTTP 
заголовки (cache-control, last-modified, ETag). 
14
Варианты реализации обновления 
〉Сервер генерирует уникальные URL для новых картинок. 
〉Клиент проверяет установленные сервером HTTP заголовки 
(cache-control, last-modified, ETag). 
〉По инициативе клиента (каждый раз, по таймеру, 
при выходе приложения из бэкграунда…). 
15
Варианты реализации обновления 
〉Сервер генерирует уникальные URL для новых картинок. 
〉Клиент проверяет установленные сервером HTTP 
заголовки (cache-control, last-modified, ETag). 
〉По инициативе клиента (каждый раз, по таймеру, при 
выходе приложения из бэкграунда…). 
Обновление зависимых картинок 
16
Чтобы получить хороший кэш 
〉Кэшируйте обработанные картинки. 
〉Ограничивайте нагрузку на CPU и память. 
〉Используйте уникальные имена файлов. 
〉Позаботьтесь об обноволении картинок. 
! 
17
Стриминг и кэширование 
музыки
Особенности 
〉Для кэширования и стриминга используется 
общий загрузчик. 
19
Особенности 
〉Для кэширования и стриминга используется общий 
загрузчик. 
〉Специализированный загрузчик. 
20
Особенности 
〉Для кэширования и стриминга используется общий 
загрузчик. 
〉Собственный загрузчик. 
〉Собственный UI плейера. 
21
Схема стриминга 
22 
Кэш 
Загрузчик 
Управление 
стримингом Audio Queue 
UI 
Данные 
16Кб 
Управление
Тюнинг 
〉Воспроизведение кусками по 16 КБ. 
23
Тюнинг 
〉Воспроизведение кусками по 16 КБ. 
〉Ограничение частоты обновления прогресса 
скачивания. 
24
Тюнинг 
〉Воспроизведение кусками по 16 КБ. 
〉Ограничение частоты уведомлений о прогрессе скачивания. 
〉Ручное управление транзакциями СУБД. 
25
Выводы 
〉Кэширование и стриминг должны использовать общий загрузчик. 
〉Стриминг должен хорошо работать на медленных соединениях. 
〉Нагрузка на вычислительные ресурсы должна быть управляемой. 
26
27 
Контакты 
Сергей Зайцев 
Старший разработчик 
@libra_rf 
sergey.zaytsev.5264 
+7 (913) 919 59 95 
rawick@yandex.ru

More Related Content

PPTX
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
PDF
Аппаратная и программно-аппаратная дедупликация от EMC
PPTX
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
PPTX
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
PDF
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
DOCX
HP 3PAR StoreServ 7200
PDF
Использование ленточных технологий для сокращения стоимости файловых хранилищ
PPTX
Совместимы ли понятия SDS и производительность?
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Аппаратная и программно-аппаратная дедупликация от EMC
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
HP 3PAR StoreServ 7200
Использование ленточных технологий для сокращения стоимости файловых хранилищ
Совместимы ли понятия SDS и производительность?

What's hot (20)

PDF
Курс высокие нагрузки: сеть (отрывок)
PPT
Презентация "Это что-то новенькое"
PDF
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
PPTX
VMUG Moscow 2014 Проблемы с дисками?
PPTX
Выбор оптимального хостинга для интернет-магазина на CMS Битрикс
PPTX
Масштабирование баз данных. (Database Scalability)
PDF
Хранилище 101
PPTX
High Availability в жизни обычного разработчика
PPT
Распределенное хранилище Ceph. Обзор и практические способы использования
PPTX
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
PDF
Grossum - Docker
PPTX
07 virtual hosts_ru
PDF
Selectel Meetup OpenStack GPU in Cloud
PPT
Загрузка, обработка, хранение и отдача статики
PDF
IPONWEB: Темная сторона силы: разработка устойчивой серверной архитектуры
PPTX
Как мы готовим MySQL / Николай Королёв (Badoo)
PDF
Обзор архитектуры [файловой] системы Ceph
PDF
Вебинар "Разработка высоконагруженных и надежных систем": Введение
PDF
Флеш в серверах: работа со скоростью вспышки
PPTX
Cпецкурс 2014, занятие 7. Web-приложения
Курс высокие нагрузки: сеть (отрывок)
Презентация "Это что-то новенькое"
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
VMUG Moscow 2014 Проблемы с дисками?
Выбор оптимального хостинга для интернет-магазина на CMS Битрикс
Масштабирование баз данных. (Database Scalability)
Хранилище 101
High Availability в жизни обычного разработчика
Распределенное хранилище Ceph. Обзор и практические способы использования
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
Grossum - Docker
07 virtual hosts_ru
Selectel Meetup OpenStack GPU in Cloud
Загрузка, обработка, хранение и отдача статики
IPONWEB: Темная сторона силы: разработка устойчивой серверной архитектуры
Как мы готовим MySQL / Николай Королёв (Badoo)
Обзор архитектуры [файловой] системы Ceph
Вебинар "Разработка высоконагруженных и надежных систем": Введение
Флеш в серверах: работа со скоростью вспышки
Cпецкурс 2014, занятие 7. Web-приложения
Ad

Viewers also liked (10)

PPT
Input output devices
PPTX
Digital image and file formats
PPT
Digital Image File Formats
PPTX
Basic image manipulation tutorial
PPTX
PPTX
File formats and its types
PPT
Video Editing Basics
PDF
Overheard at TEDMED 2015: Let's Dance
PPTX
WTF - Why the Future Is Up to Us - pptx version
PDF
Hype vs. Reality: The AI Explainer
Input output devices
Digital image and file formats
Digital Image File Formats
Basic image manipulation tutorial
File formats and its types
Video Editing Basics
Overheard at TEDMED 2015: Let's Dance
WTF - Why the Future Is Up to Us - pptx version
Hype vs. Reality: The AI Explainer
Ad

Similar to Новая Яндекс.Музыка. Особенности разработки iOS-клиента — Сергей Зайцев (14)

PDF
Алексей Захаров "Архитектура Яндекс.Фоток"
PDF
Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
PPTX
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
PDF
Кэширование в веб-приложениях: что? где? когда?
PDF
Егор Львовский — «Кеширование на клиенте и сервере»
PDF
Кэширование данных с помощью Service Worker
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
PDF
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
PDF
Разработка RESTful api with all bells and whistles
ODP
Root Conf2009 Kopeyko 16.9
PPTX
ITmozg, Даниил Павлючков
PPTX
Software craftsmanship #5 кэши и микросервисы
PDF
2013 09 19 кеширование на клиенте и сервере
PPT
распределенная архитектура Lamp приложений петр зайцев
Алексей Захаров "Архитектура Яндекс.Фоток"
Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
Кэширование в веб-приложениях: что? где? когда?
Егор Львовский — «Кеширование на клиенте и сервере»
Кэширование данных с помощью Service Worker
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
Разработка RESTful api with all bells and whistles
Root Conf2009 Kopeyko 16.9
ITmozg, Даниил Павлючков
Software craftsmanship #5 кэши и микросервисы
2013 09 19 кеширование на клиенте и сервере
распределенная архитектура Lamp приложений петр зайцев

More from Yandex (20)

PDF
Предсказание оттока игроков из World of Tanks
PDF
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
PDF
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
PDF
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
PDF
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
PDF
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
PDF
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
PDF
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
PDF
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
PDF
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
PDF
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
PDF
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
PDF
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
PDF
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
PDF
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
PDF
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
PDF
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
PDF
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
PDF
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
PDF
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Предсказание оттока игроков из World of Tanks
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...

Новая Яндекс.Музыка. Особенности разработки iOS-клиента — Сергей Зайцев