SlideShare a Scribd company logo
1 of 63
Что делать, когда у вас
100 партнеров?
Как в Lamoda устроен фронтенд
системы аналитики
Иван Потапов
миллионов уникальных
пользователей в месяц
11
2
миллионов уникальных
пользователей в месяц
различных сторонних
скриптов
11 100
3
миллионов уникальных
пользователей в месяц
различных сторонних
скриптов
запросов к
партнерским сервисам
на каждой странице
11 100 70
4
Все счастливы?
5
НЕТ!
6
7
Проблемы
• Бардак в коде
8
Проблемы
• Бардак в коде
• Низкая скорость загрузки страниц
• Бардак в коде
• Низкая скорость загрузки страниц
• Каждое добавление нового скрипта – риск сломать все
9
Проблемы
Сторонний код
• Когда загружаем и исполняем?
10
Сторонний код
• Когда загружаем и исполняем?
• Что загружаем?
11
• Когда загружаем и исполняем?
• Что загружаем?
• Как навести в этом всем порядок?
12
Сторонний код
• Когда загружаем и исполняем?
• Что загружаем?
• Как навести в этом всем порядок?
• Как интегрировать с кодом сайта?
13
Сторонний код
Пример: google analytics
Adding analytics.js to Your Site http://bit.ly/1IwFjPf
14
Adding analytics.js to Your Site http://bit.ly/1IwFjPf
“The code should be added near the top of
the <head> tag and before any other script or CSS tags …”
15
Пример: google analytics
Adding analytics.js to Your Site http://bit.ly/1IwFjPf
“The code should be added near the top of
the <head> tag and before any other script or CSS tags …”
16
Пример: google analytics
Defer vs async
<script>
HTML parsing
HTML parsing paused
Script download Script execution
async vs defer attributes http://bit.ly/2rhhZnx
17
<script>
HTML parsing
HTML parsing paused
Script download Script execution
async vs defer attributes http://bit.ly/2rhhZnx
<script async>
18
Defer vs async
<script>
HTML parsing
HTML parsing paused
Script download Script execution
<script async>
<script defer>
19
Defer vs async
async vs defer attributes http://bit.ly/2rhhZnx
Prefer DEFER Over ASYNC by Steve Souders
http://bit.ly/2pMZ6Zz
20
Defer vs async
<script async>
<script defer>
2.3s DOMContentLoaded
21
1.3s DOMContentLoaded
<script async>
<script defer>
2.3s DOMContentLoaded
1.3s DOMContentLoaded
22
1.3s DOMContentLoaded
1.9s window.onload
window.onload
<script defer>
1.3s DOMContentLoaded
23
Чего добились
• Уменьшили время загрузки страницы
24
Чего добились
• Уменьшили время загрузки страницы
• Вначале загружается и исполняется только наш js-код
25
Чего добились
• Уменьшили время загрузки страницы
• Вначале загружается и исполняется только наш js-код
• Сторонний код загружается и исполняется, когда пользователь
уже может взаимодействовать со страницей
26
Что загружаем ?
27
Требования к партнерам
• Согласовываем какие данные могут собираться и куда отправляться
28
• Согласовываем какие данные могут собираться и куда отправляться
• Content Security Policy
29
Требования к партнерам
• Content Security Policy
Content-Security-Policy: default-src 'self';
script-src: *.datajet.io;
script-src 'unsafe-inline’ https:;
report-uri: https://lamoda.ru/err/;
30
Требования к партнерам
Content-Security-Policy-Report-Only: ...
Content-Security-Policy: default-src 'self';
script-src: *.datajet.io;
script-src 'unsafe-inline’ https:;
report-uri: https://lamoda.ru/err/;
31
Требования к партнерам
• Content Security Policy
Content-Security-Policy-Report-Only: ...
Content-Security-Policy: default-src 'self';
script-src: *.datajet.io;
script-src 'unsafe-inline’ https:;
report-uri: https://lamoda.ru/err/;
32
Требования к партнерам
• Content Security Policy
Content-Security-Policy-Report-Only: ...
Content-Security-Policy: default-src 'self';
script-src: *.datajet.io;
script-src 'unsafe-inline’ https:;
report-uri: https://lamoda.ru/err/;
33
Требования к партнерам
• Content Security Policy
Content-Security-Policy-Report-Only: ...
Content-Security-Policy: default-src 'self';
script-src: *.datajet.io;
script-src 'unsafe-inline’ https:;
report-uri: https://lamoda.ru/err/;
34
Требования к партнерам
• Content Security Policy
Content-Security-Policy-Report-Only: ...
Content-Security-Policy: default-src 'self';
script-src: *.datajet.io;
script-src 'unsafe-inline’ https:;
report-uri: https://lamoda.ru/err/;
35
Требования к партнерам
• Content Security Policy
Content-Security-Policy-Report-Only: ...
36
Требования к партнерам
• Content Security Policy
{
"csp-report": {
"document-uri": "https://lamoda.ru/",
"referrer": "",
"blocked-uri": "https://st.lmcdn.ru/script.js",
"violated-directive": "default-src 'self'",
"original-policy": "default-src 'self'; report-uri /err/",
"disposition": "report"
}
}
• Согласовываем какие данные могут собираться и куда отправляться
• Content Security Policy
• Размер кода < 60kb и время ответа партнерских сервисов < 1s
37
Требования к партнерам
• Согласовываем какие данные могут собираться и куда отправляться
• Content Security Policy
• Размер кода < 60kb и время ответа партнерских сервисов < 1s
• Service worker
38
Требования к партнерам
• Service worker
• программируемый сетевой прокси
39
Требования к партнерам
• Service worker
• программируемый сетевой прокси
• https only
40
Требования к партнерам
• Service worker
• программируемый сетевой прокси
• https only
• fetch API
41
Требования к партнерам
42
Требования к партнерам
• Согласовываем какие данные могут собираться и куда отправляться
• Content Security Policy
• Размер кода < 60kb и время ответа партнерских сервисов < 1s
• Service worker
• Согласовываем имена в коде
Как навести в этом всем порядок?
43
Сервисы для организации скриптов
44
Сервисы для организации скриптов
• Тег – фрагмент стороннего js-кода
45
• Тег – фрагмент стороннего js-кода
• Контейнер – загрузчик тегов
46
Сервисы для организации скриптов
• Тег – фрагмент стороннего js-кода
• Контейнер – загрузчик тегов
• Правило – условие, при котором исполняется тег
47
Сервисы для организации скриптов
dataLayer – уровень данных
48
Сервисы для организации скриптов
dataLayer – уровень данных
dataLayer = [];
49
Сервисы для организации скриптов
dataLayer – уровень данных
dataLayer = [];
dataLayer.push({
event: 'event',
data: 5
});
50
Сервисы для организации скриптов
• Обновление кода без релиза сайта
51
Сервисы для организации скриптов
• Обновление кода без релиза сайта
• Предпросмотр изменений
52
Сервисы для организации скриптов
• Обновление кода без релиза сайта
• Предпросмотр изменений
• Поддерживать могут не только разработчики
53
Сервисы для организации скриптов
Как интегрировать с кодом сайта?
54
API
product = {
brand: {
id: 471,
name: "Lacoste",
url: '/b/471/brand-lacoste/'
},
color: 'зеленый',
...
55
API
56
События
LMDA.Events.trigger(LMDA.Events.CART_ADD);
57
События
LMDA.Events.trigger(LMDA.Events.CART_ADD);
58
События
LMDA.Events.trigger(LMDA.Events.CART_ADD);
dataLayer.push({
event: 'event',
data: 5
});
59
Выводы
• С осторожностью относитесь к чужому коду
60
Выводы
• С осторожностью относитесь к чужому коду
• Сторонние сервисы избавляют от велосипедов
61
Выводы
• С осторожностью относитесь к чужому коду
• Сторонние сервисы избавляют от велосипедов
• Перфоманс – большая тема, но очевидные решения – самые
действенные
62
63
Вопросы?
ivan.potapov@lamoda.ru
unclepotap
Младший руководитель
группы десктопных
интерфейсов
tech.lamoda.ru

More Related Content

What's hot

«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
it-people
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
it-people
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
Vadim Kruchkov
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Ontico
 

What's hot (10)

«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Михаил Сенин - Индексирование сайта: Яндекс.Вебмастер для устранения проблем
Михаил Сенин -  Индексирование сайта: Яндекс.Вебмастер для устранения проблем Михаил Сенин -  Индексирование сайта: Яндекс.Вебмастер для устранения проблем
Михаил Сенин - Индексирование сайта: Яндекс.Вебмастер для устранения проблем
 
Артем Титаренко
Артем ТитаренкоАртем Титаренко
Артем Титаренко
 
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMSМихаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
 
Презентация Сафонова и Прусенка на семинаре "Продавайте больше"
Презентация Сафонова и Прусенка на семинаре "Продавайте больше"Презентация Сафонова и Прусенка на семинаре "Продавайте больше"
Презентация Сафонова и Прусенка на семинаре "Продавайте больше"
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
 
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
 

Similar to Что делать, когда у вас 100 партнеров / Иван Потапов (Lamoda)

Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...
tabtabus
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
IT-Portfolio
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
Yandex
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Sergey Xek
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
rit2011
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
rit2011
 

Similar to Что делать, когда у вас 100 партнеров / Иван Потапов (Lamoda) (20)

Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
 
Little Service in 2h
Little Service in 2hLittle Service in 2h
Little Service in 2h
 
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
 
Управление сетками сайтов
Управление сетками сайтовУправление сетками сайтов
Управление сетками сайтов
 
Управление сетками сайтов
Управление сетками сайтовУправление сетками сайтов
Управление сетками сайтов
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013
 
Специфика рендеринга vue.js-приложений на сервере, Алексей Клюев
Специфика рендеринга vue.js-приложений на сервере, Алексей КлюевСпецифика рендеринга vue.js-приложений на сервере, Алексей Клюев
Специфика рендеринга vue.js-приложений на сервере, Алексей Клюев
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
MS TFS 2010 - Обзор и архитектура
MS TFS 2010 - Обзор и архитектураMS TFS 2010 - Обзор и архитектура
MS TFS 2010 - Обзор и архитектура
 

More from Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
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)
 
Разгоняем 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.)
 
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...
 

Что делать, когда у вас 100 партнеров / Иван Потапов (Lamoda)

Editor's Notes

  1. Важно знать своих пользователей
  2. банеры даже когда вы уйдете с ламоды будете видеть наши банеры везде) предсказание размеров пользователю персонализированный поиск Рекомендации Собственная баннерная система !!!! Персональные скидки
  3. Давайте все делать сами? Не можем позволить себе все разрабатывать сами, быстро меняющиеся требования Сложно, дорого и сложно; разные алгоритмы ЗАЧЕМ ВСЕ ЭТО НУЖНО?
  4. несколько версий одного и того же
  5. тормозит/не грузится если что-то из скриптов не отвечает
  6. нет возможности отладить в тестовой среде
  7. Загружаем скрипты как можно позже, чтоб не вредить пользователю, чтобы он быстрее мог взаимодействовать со страницей
  8. не знаем что делает чужой код и как, как его контролировать и управлять им
  9. Навести как-то во всем порядок, написать какую-то админку? Положить куда-то на ftp для скорости исправления?
  10. Как не засорять свою кодовую базу?
  11. DEFER scripts никогда не блокируют синхронные скрипты, В то время как ASYNC – зависит того как быстро они загрузились. Блокировка инстраграм domcontentloaded на 0.5s => Графики для каталога !!! Нагрузка js-кода на CPU (html и css – существенно меньше)
  12. Работает быстро Но как понимаете риск сломать все, все еще есть => У нас есть список требований который мы даем нашим партнерам
  13. =>необходимо понимать куда отсылать данные
  14. Механизм обеспечения безопасности, защита от xss (атаки подмены контента)
  15. Все что не разрешено – запрещено, т е по-умолчанию блокируется все По-умолчанию запрещен eval и inline Пример заголовка, выставляется в nginx, на странице
  16. Загружать с того же домена что и сама страница
  17. Грузить скрипты с определенного домена и поддоменов
  18. Разрешить inline-script
  19. Стандартный формат отсылается браузером, если проверка не прошла
  20. Для теста можно использовать: cspro
  21. disposition: report or enforce Nginx, оперативное редактирование??, очень длинные заголовки
  22. Отдельный поток неблокирующий DOM, Offline first, рассматриваем перевод всей аналитики на него
  23. Однако, Для нас важно сейчас и с чего решили начать: это юзать как прог сетев прокси
  24. поддерживают последние версии firefox с флагами
  25. Или диспетчеры тегов Используем gtm - бесплатен
  26. Терминологии, код загружается в админку сервиса
  27. Скрипт который загружает и исполняет теги в зависимости от..
  28. Правил, т е события в интерфейсе, урла,
  29. Создается самим разработчиком