+ All Categories
Home > Internet > Ускоряване на World Wide Wait

Ускоряване на World Wide Wait

Date post: 15-Jul-2015
Category:
Upload: seom
View: 886 times
Download: 0 times
Share this document with a friend
49
Ускоряване на World Wide Wait
Transcript

Ускоряване на World Wide Wait

ЗдравейтеПетър НиколовPeter Nikolow

Можете да ме намерите:

twitter.com/peternikolowfacebook.com/peter.nikolowlinkedin.com/in/peternikolowplus.google.com/+peternikolow

“We must deliver and render the above the fold (ATF )content in

under one second, which allows the user to begin interacting with the

page as soon as possible

https://developers.google.com/speed/docs/insights/mobile

Рендиране на мобилна страница за 1 секунда

DNS преобразуване

Рендиране от браузъра

Сървърна обработка

HTTP заявка и отговор

TCP свързване

200 ms 200 ms200 ms 200 ms 200 ms

600 ms идващи от 3G мрежата които не може да бъдат оптимизирани

400 ms които може да бъдат оптимизирани от Вас

https://developers.google.com/speed/docs/insights/mobile

Да поговорим протоколно?С протоколите по протоколски

1.DNS

Пътят към бързия WEB започва със DNS

DNS

▷ премахване low TTLминимум ден TTL

▷ географски близо до клиентите

▷ избягване на екзотиките.ly, .tv, .guru

▷ ненадежни регистратори

DNS ▷ капацитет

DNS

▷ избягване на cname записиdig +norec +trace cdn.mobiliodevelopment.com

DNS

▷ резервен план

2.TCP

Нека да ускорим мрежовия протокол

TCP

▷ създаден преди40 години - 1974

▷ TCP slow start○ IW3 -> IW10

TCP

▷ TCP slow start

TCP

▷ TCP efficiency○ Nagle -> TCP_NODELAY○ TCP_CORK -> TCP_CORK OFF

▷ Retransmission timeout (RTO)○ 3 s -> 1s

▷ PRR - proportional rate reduction▷ TLP - tail lost probe▷ ER - early retransmit

TCP

▷ TCP handshake○ 3 way handshake

client server

SYN

ACKRequest

SYN-ACK

Response

TCP

▷ New TCP handshake○ TCP fast open○ TFO cookie

client server

SYN +TFO

cookie request

ACK

SYN-ACK+TFO

cookie

SYN +TFO +

Request SYN-ACKRequest sent to

app

ACK

Response

...

3.HTTP

Проблеми във приложения протокол

HTTP

▷ Версия 1.0 създадена 89/90▷ Версия 1.1 създадена 95▷ изцяло текстов▷ може да се компресира

отговора▷ създава много връзки към

сървъра

HTTP типове на връзкатаCloseвръзката се затваря

Keep-aliveпостоянна връзка

Pipelineпостоянна връзка на стероиди

client server

request

response

close

client server client server

HTTP/2Вече е стандарт

HTTP/2

▷ винаги включени pipeline и keep-alive

▷ компресира заявката и хедърите на отговора

▷ вече е двоичен и е само една връзка

HTTP/2

▷ server hint▷ server push▷ приоритизиране на

съдържанието

27%-60% По-бързо рендира страниците във сравнение със HTTP/1.1; без криптиране на връзката

40%По-малко пакети във сравнение със HTTP/1.1

39%-55%По-бързо рендира страниците във сравнение със HTTP/1.1 (некриптирано) при криптиране

https://www.chromium.org/spdy/spdy-whitepaper

4.TLS

Все още ли е причина за забавяне?

“On our production frontend machines (Google),

SSL/TLS accounts for less than 1% of the CPU load, less than 10 KB of memory per connection and less than 2% of network overhead. Many people believe that SSL/TLS takes a lot of CPU time and we hope

the preceding numbers will help to dispel that.

https://www.imperialviolet.org/2010/06/25/overclocking-ssl.html

TLS

▷ SSL е мъртъв! Да живее TLS!▷ SNI▷ сертификати само от CA▷ безплатни сертификати

○ StartSSL○ Let’s encrypt

TLS

▷ забранете компресията▷ TLS handshake - ECDH▷ HSTS

○ HTTP strict transport security▷ TLS подновяване на сесията

○ session identifiers - стар○ session tickets - нов

▷ TLS false start▷ OCSP stapling

QUICQuick UDP Internet ConnectionsНов приложен протокол който може да измести TCP

Желязната стражазад желязната завеса

5.HTTP server

И обичайните заподозрени за забавянията

HTTP servers

▷ Apache▷ nginx▷ lighthttpd▷ litespeed

HTTP servers

▷ .htaccess правила○ използвайте статични правила

във секцията на сървъра▷ компресия - deflate/gzip

○ компресирайте статичните файлове

▷ редиректи○ редирект map file○ плъгин

▷ сървърно API за езиците○ CGI, FastCGI, вграден модул

HTTP accelerators

▷ Varnish▷ nginx reverse proxy▷ nginx micro cache

PHP

▷ PHP 5.2, 5.3 са EOL▷ PHP 5.4 тази година EOL ▷ скорост

○ по-новите версии са по-бързи○ 5.2 -> 5.5 20%-35% по-бързи

▷ памет○ новите версии имат по-малка

консумация○ 5.2 -> 5.5 до 50% по-малко

https://wordpress.org/about/stats/

PHP

▷ opcode cache○ APC - до 5.4○ Xcache○ Zend Opcache (PHP 5.5+)

PHP Наличен в кеша? Изпълнение

Обработка Компилиране Запазване

Зарежданеда

не

PHP

▷ бъдещето○ HHVM○ PHPNG (PHP 7)

PHP7Версия 7 се очаква да излезе Юли 2015 като RC и финална Октомври 2015. Ускорението е около 100%

MySQL

▷ оптимизиране○ mysqltuner

MySQLВерсия 5.5+ е по-бърза от всички досегашни.

6.Wordpress

Защо се бави?

WordPress

▷ преминете на последната версия

▷ проверете дали темата не ви бави○ query monitor

▷ проверете дали не ви бави плъгин○ p3 profiler○ query monitor

WordPress

▷ изключете pingbacks/trackbacks

▷ проверете за XML-RPC атаки▷ заключете wp-login.php със

парола▷ премахнете излишните

плъгини

WordPress

▷ използвайте по-добри версии на плъгините

▷ инсталирайте кеш○ HCE - Martin Lazarov○ WP Super Cache - Samuel Wood ○ W3TC - Frederick Townes○ проверете редиректите○ проверете 404 грешките

▷ инсталирайте плъгин за архивиране

WordPress DB

▷ EAV модел за съхранение○ entity, attribute, value

▷ премахнете черновите постове

▷ премахнете спам коментарите

▷ оптимизирайте таблиците○ SQL - optimize table

WordPress DB

▷ наблюдавайте внимателно следните таблици○ wp_options○ wp_postmeta○ wp_commentmeta

▷ направете си тестов сървър за експерименти○ DB 1.1Gb -> 215 Mb

Client sideОптимизация от клиентска страна

Благодаря!Въпроси?

Можете да ме намерите на:@peternikolow


Recommended