33
СКОРОСТЬ ЗАГРУЗКИ СТРАНИЦЫ или " РОЖЕННЫЙ ПОЛЗАТЬ - ЛЕТАТЬ НЕ МОЖЕТ ?..."

скорость загрузки

Embed Size (px)

Citation preview

Page 1: скорость загрузки

СКОРОСТЬ ЗАГРУЗКИСТРАНИЦЫ

или

"РОЖЕННЫЙ ПОЛЗАТЬ - ЛЕТАТЬ НЕМОЖЕТ?..."

Page 2: скорость загрузки

СЕЗОН 1СЕРИЯ "ЗАДАЧА"1

Page 3: скорость загрузки

СЕРИЯ "ПРОБЛЕМА"2

Page 4: скорость загрузки

все начиналось хорошо :)

Page 5: скорость загрузки

Наша веб-страница

Веб-страницы стают все больше и больше (контент, CSS,JS, катринки, шрифты)

Количество юзеров, которые заходят с телефонов ипланшетов растет

Page 6: скорость загрузки

0:12

Page 7: скорость загрузки

СЕРИЯ "ЦЕЛЬ"3

Page 8: скорость загрузки

< 1s 1-3s > 10s

Page 9: скорость загрузки

Цель - 1 *опой на 2 стульяхувеличить скорость загрузкиНЕ обрезать фичи, НЕ обидеть фронт

Page 10: скорость загрузки

СЕРИЯ "ЧЕМ ДАЛЬШЕ В ЛЕС, ..."4

Page 11: скорость загрузки

диагноз неутешительный

GO лечить!

Page 12: скорость загрузки

ладно, пошли в Google!

Page 13: скорость загрузки

google PageSpeedрезультат.

Page 14: скорость загрузки

кеш браузераExpires: Thu, 15 Apr 2010 20:00:00 GMT

Cache-Control: publicрезультат -1.5%

Page 15: скорость загрузки

ок - пошли к админукеширующий сервер

дороговато...

реакция клиента

Page 16: скорость загрузки

сократить CSSсократить JS

Page 17: скорость загрузки

                            $cssFiles = array(    "ads.css",    "formatting.css",    "pagesections.css",    "print.css",    "screen.css",    "sidebar.css");

$buffer = "";foreach ($cssFiles as $cssFile) {    $buffer .= file_get_contents($cssFile);}

                        

Page 18: скорость загрузки

                            

// Remove comments$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);

// Remove space after colons$buffer = str_replace(': ', ':', $buffer);

// Remove whitespace$buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);                            

                        

Page 19: скорость загрузки

                            

// Enable GZip encoding.ob_start("ob_gzhandler");

// Enable cachingheader('Cache‐Control: public');

// Expire in one dayheader('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');

// Set the correct MIME type, because Apache won't set it for usheader("Content‐type: text/css");

// Write everything outecho($buffer);                            

                        

Page 20: скорость загрузки

0:06

Page 21: скорость загрузки

СЕРИЯ "ВСКРЫВАЕМ ЧЕРНЫЙ ЯЩИК"5

Page 22: скорость загрузки

{Critical Rendering Path

Page 23: скорость загрузки
Page 24: скорость загрузки
Page 25: скорость загрузки

А как же картинки!Картинки НЕ блокируют построение DOM, НИ

отрисовку страницы

Page 26: скорость загрузки

Кажеться, о чем-то забыли...JavaScript!

Page 27: скорость загрузки

                            

<p>    Hello <span>there</span>, SitePoint!    <script>

</script>How are you?    <img src="photo.jpg"></p>                            

                        

        document.write('How are you?');        var color = elem.style.color;        elem.style.color = 'red';    

JavaScript - может менять дерево DOM => JavaScriptблокирует отрисовку

Page 28: скорость загрузки

СЕРИЯ "РЕШЕНИЕ"6

Page 29: скорость загрузки

Уменьшить кол-во байтов на выходе:1.минимизировать (убрать пробелы, комменты)ужать (gzip)кеш браузера

Page 30: скорость загрузки

Минимизировать CSS Render Blocking:2.поместить link в head

                                    

<!‐‐</head>‐‐><!‐‐?php flush(); ?‐‐><!‐‐<body>‐‐>                                    

                                

                                    

    <title>Sample Site</title>    <link href="style.css" rel="stylesheet">    <link href="print.css" rel="stylesheet" media="print">    <link href="landscape.css" rel="stylesheet" media="orientation:landscape">

...                                    

                                

Page 31: скорость загрузки

Минимизировать Parser Blocking JavaScript:3.                            

...    <script src="app.js" async=""></script>

                            

                        

Page 32: скорость загрузки

СЕРИЯ "HAPPY END" :)ФИНАЛ

Page 33: скорость загрузки

наши заказчики