23
Производителност за Wordpress Любомир Русанов СуперХостинг.БГ Http://www.superhosting.bg

Wordcamp2011

Embed Size (px)

Citation preview

Page 1: Wordcamp2011

Производителност за Wordpress

Любомир РусановСуперХостинг.БГ

Http://www.superhosting.bg

Page 2: Wordcamp2011

Какво е сървърен ресурс? Изразходвана памет; Процесорно натоварване; Интернет трафик; Дискови операции; Брой файлове; База от данни;

Page 3: Wordcamp2011

Основно правило за оптимизация

Грешките на програмистите ...

се решават ...с повече ХАРДУЕР!!!

Page 4: Wordcamp2011

До кога?

Page 5: Wordcamp2011

Основни грешки Оразмеряване (обработка) на картинки; Излишно голям брой елементи на

страницата; Ненужни статистически модули; Неоптимални алгоритми; Проблемни бази данни и заявки; Лош разчет на посещенията; Самоопресняващи се и презареждащи се

страници;

Page 6: Wordcamp2011

Намерете тясното място

Концентрирайте се върху най-често извикваният код;

Използвайте кеширане; Не извиквайте външни ресурси в реално

време; Използвайте оптимални SQL заявки; Тествайте с големи обеми данни още при

разработка;

Page 7: Wordcamp2011

Обратно към Wordpress Използване на кеширащи плъгини Не използвайте динамично оразмеряване,

например timthumb; Проверявайте plugin-ите, които използвате

за скорост; Премахнете излишните plugin-ини, които

реално не използвате; Внимавайте с броят ресурси (css, js,

картинки), които зареждате; 404 грешки;

Page 8: Wordcamp2011

Защо не timthumb

Извиква php код за ВСЯКА картинка; Извършва относително тежки операции за

всяка картинка; Картинките не се кешират от браузъра;

Page 9: Wordcamp2011

Използвайте mod_expires

Указва на уеб браузърите колко време на кешират ресурси;

Подходящ е за сайтове с много css, js и картинки;

Активира се чрез .htaccess; Пример

Page 10: Wordcamp2011

Използвайте mod_expires### activate mod_expires

ExpiresActive On

### Expire .gif's 1 month from when they're accessed

ExpiresByType image/gif A2592000

### Expire .jpg's 1 month from when they're accessed

ExpiresByType image/jpg A2592000

### Expire .js's 1 month from when they're accessed

ExpiresByType text/js "access plus 1 month"

ExpiresByType text/javascript "access plus 1 month"

ExpiresByType application/x-javascript "access plus 1 month"

### Expire .css's 1 month from when they're accessed

ExpiresByType text/css "access plus 30 days"

### Expire everything else 1 day from when it's last modified

### (this uses the Alternative syntax)

ExpiresDefault "modification plus 1 day"

Page 11: Wordcamp2011

Използвайте W3 Total Cache Един от мощните кеширащи plugin-и; Кеширане на цели страници – генерирани от

php; Кеширане на заявки към базата данни; Кеширане на обекти; Поддържа minify на js и css + кеширане; Подобрява кеширането от браузърите; Подобрява обработката на 404 грешките Труден за конфигуриране;

Page 12: Wordcamp2011

Използвайте W3 Total Cache

Page 13: Wordcamp2011

Използвайте WP Super Cache Много популярен и бърз; Кеширане на цели страници генерирани от

php; Може да сервира кешираните страници и с

Php – няма нужда да се модифицира .htaccess

Подобрява кеширането от браузърите; Позволява компресиране на страниците; Лесен за конфигуриране;

Page 14: Wordcamp2011

Използвайте WP Super Cache

Page 15: Wordcamp2011

DB Cache Reloaded Fix

Кешира заявките към базата от данни; По-малък размер на кеша, защото не пази

цели страници; Много подходящ при големи бази от данни; Комбинира се добре с WP Super Cache Лесен за конфигуриране;

Page 16: Wordcamp2011

DB Cache Reloaded Fix<!-- Generated in 0,837 seconds. Made 86 queries to database and 21 cached queries. Memory used - 40.27MB --><!-- Cached by DB Cache Reloaded -->

Page 17: Wordcamp2011

Hyper Cache Extended

Кеширане на цели страници генерирани от php;

Работи както под Apache така и под IIS Обработка на 404 грешки; Съвместим е с мобилни версии; Разработен в България :) Лесен за конфигуриране;

Page 18: Wordcamp2011

Hyper Cache Extended

Page 19: Wordcamp2011

SQL_CALC_FOUND_ROWS Bug

Проявява се при много публикации:

SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID NOT IN (44682, 44657, 44630) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 24580, 5

Page 20: Wordcamp2011

SQL_CALC_FOUND_ROWS Bug

Проблема е по-скоро в MySQL; Може да се реши с кеширащ Plugin; Има наличен „пач“ за WordPress 3.2.1;

http://x-pose.org/2011/08/fix-the-wordpress-sql_calc_found_rows-bug/

Page 21: Wordcamp2011

Резюме Няма универсално решение; Тествайте не на реалният си сайт; Комбинирайте различни техники; Консултирайте се със специалисти;

Page 22: Wordcamp2011

Въпроси и отговори

Page 23: Wordcamp2011

Благодаря Ви!Любомир Русанов

http://www.superhosting.bg http://blog.superhosting.bg http://facebook.com/superhosting http://twitter.com/SuperHostingBG