Submit Search
Upload
7 убийц производительности WordPress
•
9 likes
•
2,679 views
Konstantin Kovshenin
Follow
Доклад с конференции WordCamp Russia 2015
Read less
Read more
Presentations & Public Speaking
Report
Share
Report
Share
1 of 42
Download now
Download to read offline
Recommended
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
xasima
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Yandex
Scaling services with apache mesos (and docker)
Scaling services with apache mesos (and docker)
Ivan Kudryavtsev
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
Tim Mironov
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
Business incubator HSE
05 db server_deployment_ru
05 db server_deployment_ru
mcroitor
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf
d0znp
07 virtual hosts_ru
07 virtual hosts_ru
mcroitor
Recommended
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
xasima
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Yandex
Scaling services with apache mesos (and docker)
Scaling services with apache mesos (and docker)
Ivan Kudryavtsev
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
Tim Mironov
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
Business incubator HSE
05 db server_deployment_ru
05 db server_deployment_ru
mcroitor
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf
d0znp
07 virtual hosts_ru
07 virtual hosts_ru
mcroitor
Redis in live
Redis in live
Igor Malinovskiy
Node
Node
Юрій Кучма
"CSScomb.js — вторая жизнь" — Михаил Трошев, Яндекс — доклад на MoscowJS 12
"CSScomb.js — вторая жизнь" — Михаил Трошев, Яндекс — доклад на MoscowJS 12
MoscowJS
Произвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбара
DevDay
Кратко о MongoDB
Кратко о MongoDB
Gleb Lebedev
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
Yandex
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Yandex
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
Alexander Titov
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Coub
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
AvitoTech
Повышаем производительность Drupal-сайта
Повышаем производительность Drupal-сайта
Владимир Колос
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest
Что нового в ASP.NET 4
Что нового в ASP.NET 4
akrakovetsky
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recovery
Михаил Тюрин
Mongo db aggregation
Mongo db aggregation
Acceptic
Wordpress Cron
Wordpress Cron
versusbassz
Высокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.com
Alexandr Yatsuk
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
ekbpy'2012 - Алексей Кирпичников - Я не люблю Mongo
ekbpy'2012 - Алексей Кирпичников - Я не люблю Mongo
it-people
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
Volha Banadyseva
Почему HTTPS соединение необходимо реализовать на Вашем сайте?
Почему HTTPS соединение необходимо реализовать на Вашем сайте?
Alexey Vidanov
Основые безопасности WordPress
Основые безопасности WordPress
Konstantin Kovshenin
More Related Content
What's hot
Redis in live
Redis in live
Igor Malinovskiy
Node
Node
Юрій Кучма
"CSScomb.js — вторая жизнь" — Михаил Трошев, Яндекс — доклад на MoscowJS 12
"CSScomb.js — вторая жизнь" — Михаил Трошев, Яндекс — доклад на MoscowJS 12
MoscowJS
Произвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбара
DevDay
Кратко о MongoDB
Кратко о MongoDB
Gleb Lebedev
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
Yandex
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Yandex
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
Alexander Titov
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Coub
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
AvitoTech
Повышаем производительность Drupal-сайта
Повышаем производительность Drupal-сайта
Владимир Колос
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest
Что нового в ASP.NET 4
Что нового в ASP.NET 4
akrakovetsky
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recovery
Михаил Тюрин
Mongo db aggregation
Mongo db aggregation
Acceptic
Wordpress Cron
Wordpress Cron
versusbassz
Высокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.com
Alexandr Yatsuk
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
ekbpy'2012 - Алексей Кирпичников - Я не люблю Mongo
ekbpy'2012 - Алексей Кирпичников - Я не люблю Mongo
it-people
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
Volha Banadyseva
What's hot
(20)
Redis in live
Redis in live
Node
Node
"CSScomb.js — вторая жизнь" — Михаил Трошев, Яндекс — доклад на MoscowJS 12
"CSScomb.js — вторая жизнь" — Михаил Трошев, Яндекс — доклад на MoscowJS 12
Произвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбара
Кратко о MongoDB
Кратко о MongoDB
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
Повышаем производительность Drupal-сайта
Повышаем производительность Drupal-сайта
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
Что нового в ASP.NET 4
Что нового в ASP.NET 4
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recovery
Mongo db aggregation
Mongo db aggregation
Wordpress Cron
Wordpress Cron
Высокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.com
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
ekbpy'2012 - Алексей Кирпичников - Я не люблю Mongo
ekbpy'2012 - Алексей Кирпичников - Я не люблю Mongo
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
Viewers also liked
Почему HTTPS соединение необходимо реализовать на Вашем сайте?
Почему HTTPS соединение необходимо реализовать на Вашем сайте?
Alexey Vidanov
Основые безопасности WordPress
Основые безопасности WordPress
Konstantin Kovshenin
Цикл разработки WordPress
Цикл разработки WordPress
Konstantin Kovshenin
Пожиратели памяти в WordPress
Пожиратели памяти в WordPress
Konstantin Kovshenin
The Settings API
The Settings API
Konstantin Kovshenin
WordPress под нагрузкой: масштабирование и отказоустойчивость
WordPress под нагрузкой: масштабирование и отказоустойчивость
Konstantin Kovshenin
Memory Management in WordPress
Memory Management in WordPress
Konstantin Kovshenin
P2
P2
Konstantin Kovshenin
Секреты WP_Query
Секреты WP_Query
Konstantin Kovshenin
Viewers also liked
(9)
Почему HTTPS соединение необходимо реализовать на Вашем сайте?
Почему HTTPS соединение необходимо реализовать на Вашем сайте?
Основые безопасности WordPress
Основые безопасности WordPress
Цикл разработки WordPress
Цикл разработки WordPress
Пожиратели памяти в WordPress
Пожиратели памяти в WordPress
The Settings API
The Settings API
WordPress под нагрузкой: масштабирование и отказоустойчивость
WordPress под нагрузкой: масштабирование и отказоустойчивость
Memory Management in WordPress
Memory Management in WordPress
P2
P2
Секреты WP_Query
Секреты WP_Query
Similar to 7 убийц производительности WordPress
Максим Кочкин (Wamba)
Максим Кочкин (Wamba)
Ontico
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)
Maksim Kochkin
Кэширование в Веб разработке на серверном и клиентском уровнях
Кэширование в Веб разработке на серверном и клиентском уровнях
ForkConf
Web весна 2013 лекция 10
Web весна 2013 лекция 10
Technopark
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
Ontico
Цена ошибки
Цена ошибки
Platonov Sergey
Цена ошибки
Цена ошибки
Andrey Karpov
Moscow.JS Windows 10 и Project Westminster
Moscow.JS Windows 10 и Project Westminster
Constantin Kichinsky
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Igor Sazonov
Взломать сайт на ASP.NET
Взломать сайт на ASP.NET
Positive Hack Days
Делаем очередь поверх Кассандры
Делаем очередь поверх Кассандры
DotNetConf
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в коде
Andrey Karpov
Web осень 2012 лекция 10
Web осень 2012 лекция 10
Technopark
Similar to 7 убийц производительности WordPress
(13)
Максим Кочкин (Wamba)
Максим Кочкин (Wamba)
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)
Кэширование в Веб разработке на серверном и клиентском уровнях
Кэширование в Веб разработке на серверном и клиентском уровнях
Web весна 2013 лекция 10
Web весна 2013 лекция 10
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
Цена ошибки
Цена ошибки
Цена ошибки
Цена ошибки
Moscow.JS Windows 10 и Project Westminster
Moscow.JS Windows 10 и Project Westminster
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Взломать сайт на ASP.NET
Взломать сайт на ASP.NET
Делаем очередь поверх Кассандры
Делаем очередь поверх Кассандры
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в коде
Web осень 2012 лекция 10
Web осень 2012 лекция 10
More from Konstantin Kovshenin
Scaling out with WordPress
Scaling out with WordPress
Konstantin Kovshenin
Будущее WordPress (SPB, 2014)
Будущее WordPress (SPB, 2014)
Konstantin Kovshenin
Road to Platform @ WordPress.com VIP Workshop 2014
Road to Platform @ WordPress.com VIP Workshop 2014
Konstantin Kovshenin
Будущее WordPress
Будущее WordPress
Konstantin Kovshenin
Templating WordPress
Templating WordPress
Konstantin Kovshenin
Как повысить скорость вашего сайта на WordPress
Как повысить скорость вашего сайта на WordPress
Konstantin Kovshenin
Things I Wish I Had Known Before Developing a WordPress Theme
Things I Wish I Had Known Before Developing a WordPress Theme
Konstantin Kovshenin
7 Tips for Better WordPress Theme Development
7 Tips for Better WordPress Theme Development
Konstantin Kovshenin
More from Konstantin Kovshenin
(8)
Scaling out with WordPress
Scaling out with WordPress
Будущее WordPress (SPB, 2014)
Будущее WordPress (SPB, 2014)
Road to Platform @ WordPress.com VIP Workshop 2014
Road to Platform @ WordPress.com VIP Workshop 2014
Будущее WordPress
Будущее WordPress
Templating WordPress
Templating WordPress
Как повысить скорость вашего сайта на WordPress
Как повысить скорость вашего сайта на WordPress
Things I Wish I Had Known Before Developing a WordPress Theme
Things I Wish I Had Known Before Developing a WordPress Theme
7 Tips for Better WordPress Theme Development
7 Tips for Better WordPress Theme Development
7 убийц производительности WordPress
1.
7убийц производительности WordPress КонстантинКовшенин
2.
session_start()
3.
Set-Cookie: PHPSESSID=hash Hash—уникальноезначениедлякаждого посетителя.
4.
session_set_save_handler() Позволяетиспользоватьпроизвольный механизмдляхранениясессий,например RedisилиMySQL.
5.
Cookies + JS
+ AJAX
6.
rand()
7.
script.js?v=rand() Браузернеможетиспользоватьфайлизкэша еслиадресбудеткаждыйразменяться.
8.
Где20150815датапоследнегоизменения файла,илиинкрементируемоечисло. Можнотакжеиспользоватьmtime(). script.js?v=20150815
9.
Какправилополноесканированиевсей таблицы,частосиспользованиемвременных таблицнадиске. ORDER BY RAND()
10.
НепопадаютподкэшзапросовMySQL. RAND(), NOW(), UNIX_TIMESTAMP()
11.
SELECT ID FROM
wp_posts WHERE post_type = 'post' AND post_status = 'publish' AND post_date >= '2015-06-15' LIMIT 50;
12.
$p = my_get_posts_from_cache(); $p
= shuffle( $p ); // RAND() $p = array_slice( $p, 0, 10 ); ПринеобходимостикэшируйтевPHP.
13.
SELECT * FROM
wp_posts WHERE ID >= ( SELECT FLOOR(( MAX(ID) - MIN(ID) + 1 ) * RAND()) + MIN(ID) FROM wp_posts ) LIMIT 1;
14.
wp_cron()
15.
ОтключитьзапускCronпоумолчаниюможно спомощьюдирективыDISABLE_WP_CRON. /etc/cron.d/wp-cron */15 * *
* * user php wp-cron.php
16.
wp_options
17.
СколькозапросоввMySQL? get_option( 'home' ); get_option(
'home' ); get_option( 'home' );
18.
get_option( 'home' ); get_option(
'home' ); get_option( 'home' ); СколькозапросоввMySQL? Ответ:0.
19.
wp_load_alloptions() Однимзапросомзагружаетвсеопциис флагомautoloadвкэшобъектов(память).
20.
CREATE TABLE wp_options
( option_id bigint(20), option_name varchar(64), option_value longtext, autoload varchar(20), );
21.
SELECT option_name, LENGTH(option_value) FROM wp_options WHERE
autoload = 'yes';
22.
add_option( $name, $value $deprecated,
$autoload ); $autoload—должналиопциязагружаться автоматически:yes/no.
23.
meta_query
24.
CREATE TABLE wp_postmeta
( meta_id bigint(20), post_id bigint(20), meta_key varchar(255), meta_value longtext, );
25.
CREATE INDEX meta_value
ON wp_postmeta(meta_value(16));
26.
CREATE INDEX meta_key_value
ON wp_postmeta( meta_key, meta_value(16) );
27.
EXPLAIN SELECT * FROM
wp_postmeta WHERE meta_key = 'foo' AND meta_value LIKE '%bar%';
28.
Elasticsearch Оченьбыстрыйсервердляиндексациии поискасучетомморфологии,опечатокит.д. ХорошоработаетсплагиномElasticPress.
29.
wp_remote_*
30.
function my_get_weather( $city
) { $weather = wp_remote_get( ... ); return $weather; }
31.
function my_get_weather( $city
) { $key = md5( 'weather-' . $city ); if ( $cache = get_transient( $key ) ) return $cache; $weather = wp_remote_get( ... ); set_transient( $key, $weather, 3600 ); return $weather; }
32.
TLC Transients Транзитныйкэшсфоновымобновлением.
33.
*.conf
34.
nginx.conf worker_processes keepalive_* gzip expires
35.
php-fpm.conf pm = static/dynamic/ondemand pm.max_children listen.backlog
36.
my.cnf innodb_buffer_pool_size query_cache_size max_connections
37.
Кэшируемость Насколькоэффективнымиявляются использованныеметодыкэширования.
38.
ab, siege Симулируютактивностьнасайте,позволяют измеритьмаксимальноеколичествозапросов всекунду.См.такжеloader.io.
39.
xhprof, xdebug ИнструментыдляпрофилированияPHPкода, позволяютнайтисамыемедленныефункции.
40.
log_slow_queries Позволяетнайтимедленныезапросыв MySQL.См.такжеmysqlreport,mysqltuner.pl
41.
iperf, fio Измерениескоростипередачиданныхпо сети,скоростичтения/записинадиск. См.такжеiotop,iftop.
42.
kovshenin.com/wcrus2015
Download now