ЗдравейтеПетър Николов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
DNS
▷ премахване low TTLминимум ден TTL
▷ географски близо до клиентите
▷ избягване на екзотиките.ly, .tv, .guru
▷ ненадежни регистратори
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
▷ 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
...
HTTP
▷ Версия 1.0 създадена 89/90▷ Версия 1.1 създадена 95▷ изцяло текстов▷ може да се компресира
отговора▷ създава много връзки към
сървъра
HTTP типове на връзкатаCloseвръзката се затваря
Keep-aliveпостоянна връзка
Pipelineпостоянна връзка на стероиди
client server
request
response
close
client server client server
HTTP/2
▷ винаги включени pipeline и keep-alive
▷ компресира заявката и хедърите на отговора
▷ вече е двоичен и е само една връзка
27%-60% По-бързо рендира страниците във сравнение със HTTP/1.1; без криптиране на връзката
40%По-малко пакети във сравнение със HTTP/1.1
39%-55%По-бързо рендира страниците във сравнение със HTTP/1.1 (некриптирано) при криптиране
https://www.chromium.org/spdy/spdy-whitepaper
“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
HTTP servers
▷ .htaccess правила○ използвайте статични правила
във секцията на сървъра▷ компресия - deflate/gzip
○ компресирайте статичните файлове
▷ редиректи○ редирект map file○ плъгин
▷ сървърно API за езиците○ CGI, FastCGI, вграден модул
PHP
▷ PHP 5.2, 5.3 са EOL▷ PHP 5.4 тази година EOL ▷ скорост
○ по-новите версии са по-бързи○ 5.2 -> 5.5 20%-35% по-бързи
▷ памет○ новите версии имат по-малка
консумация○ 5.2 -> 5.5 до 50% по-малко
PHP
▷ opcode cache○ APC - до 5.4○ Xcache○ Zend Opcache (PHP 5.5+)
PHP Наличен в кеша? Изпълнение
Обработка Компилиране Запазване
Зарежданеда
не
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