Спиране ‘версии на публикацията’ в WordPress
Трудно ми беше да измисля заглавие на тази публикация. Сигурно сте забелязали, че от версия 2.6 WordPress пази по няколко версии на всяка публикация, като броят им зависи от това колко време сме я писали и колко пъти сме я променяли. Лично за мен това е напълно излишна опция, която прави базата данни в пъти по-голяма и цялата система в пъти по-бавна.
Отдавна се каня да намеря решение на този проблем, трябваше да ми остане малко свободно време и днес това се случи. Стимулът беше, че от Гугъл официално признаха, че скоростта на сайт ще е от значение за позиционирането му. Спирането на тази опция, наречена „revisions“, ускорява значително скоростта на WordPress.
В момента пиша този пост много по-лесно от преди, защото той много по-бързо се запазва автоматично. Спирането на тази ненужна и бавеща екстра се състои от три етапа. Първо задаваме директива на WordPress, да спре да пази нови версии на публикациите. След това изчистваме базата данни от всички непубликувани версии и накрая оптимизираме таблиците.
1. Спиране запазването на нови версии
За целта трябва да се добави следната директива към системата:
define('WP_POST_REVISIONS', false);
По принцип би-трябвало да става с добавяне на това във функциите на темата или направо във файла wp-config.php, но при мен така не стана. Затова го направих като разширение, което може да си изтеглите от тук и да инсталирате ръчно, чрез качване от компютър. Ако всичко е наред, ще спрете да виждате версиите на публикациите.
2. Изчистване на базата данни
За целта изпълнете следната заявка в базата данни на блога:
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';
Излишно е да казвам преди да пуснете това да си направите архив на базата данни! Заявката е бавна, в един от блоговете ми три към 23 секунди и отнесе няколко десетки хиляди излишни записа. Всичко зависи от големината на блога, важното е да имате търпение и да не прекъсвате заявката.
Редакция: Заявката има един мааалък страничен ефект – някои връзки от blogroll спират да се показват. За целта е необходимо да се редактират и save-нат наново. Не поемам никаква отговорност, ако заявката вреди и на нещо друго.
3. Оптимизиране на таблиците
Тук е лесно, просто изпълнете и тази заявка в базата данни:
OPTIMIZE TABLE wp_posts, wp_term_relationships, wp_postmeta;
Всичко това го направих на всичките си блогове, отне ми доста време, но смятам, че си заслужава. Все-още вървят – шегувам се :) Ако не ви се рискува, то изпълнете само точка едно. Ако сте се захванали с точка две, то точка три е безобидна и може само да ви е от полза. Приятно триене за един по-бърз WordPress :)
П.С.: Поиграх си да направя удобни бутони за споделяне в популярните социални мрежи в края на всяка публикация. Надявам се, че ще са полезни.
бутон за споделяне в социални мрежи
Коментари
20 коментара за Спиране ‘версии на публикацията’ в WordPress
-
Stu на 19.11.2009 12:57
Има ли останал някой който не ползва WordPress?
Ако говорим за скорост – това е един от най-бавните и ресурсоемки уеб софтуери. -
@Stu – съгласен съм напълно с теб, но е добър за SEO. А за някои маниаци като мен, SEO е всичко, така че няма начин. Постоянно търся начини да го подобрявам и оптимизирам този WordPress. А разработчиците вместо да го направят по-лек, го трупат с все-повече глупости.
Като си представя и, че някои правят малки фирмени сайтове от по 5-10 страници на него…
-
хм, интересен начин за оптимизация. Аз честно казано не бих го направил толкова заради loadtime-а, колкото да мога да публикувам по-бързо статии. В момента по-големите ми блогове имат проблем със скоростта и ще гледам да изпробвам поне точка 1.
мерси! -
@Stu, има, има.
@Тошков, Това е доста полезна информация за мен, тъй като скоро ще започваме разработката и на wordpress добавки. Спестяваш ми няколко часа ровене.
Мерси. -
И аз съм спрял ревизиите отдавна, но не посмях да бърникам в базата и да трия старите, нека си седят :) Ако товари много си включвам кеширане…
-
Ето какво ползвам аз, с един клик:
-
За изтриването на ревизийте от блога може да се използва плъгина Revision Delete. Аз лично него използвам :-)
-
Аз ли съм най-калпав или редовно пазенето на ревизиите ми е спасявало важни материали :)
Василе, мога ли да изтрия само досегашните ревизии? Без да ги изключвам съвсем. И може ли така да си ги трия през известно време?DELETE a,b,c
FROM wp_posts aТази заявка буквална ли е? Какви са тези а,б, и ц :) в постовете ?
-
@Радев – можеш да си ги триеш периодично без да ги спираш. Просто периодично си изпълняваш заявката :) Тези букви (a,b,c) са помощни имена, с които кръщаваме таблиците от „изгледа“ след сливането.
-
Не съм експерт по wordpress нито по бази данни, но… какво те кара да мислиш, че непубликувани версии на дадена публикация, забавят изпълнението на заявката за зареждане към вече публикувана такава.
Освен метрики „на око“ имаш ли данни в… милисекунди за оптимизацията, която се постига :)
-
Логично е като правиш заявка от голяма база данни, да става по-бавно, отколкото от по-малка база данни. А при WordPress за генерирането на всяка страница се използват доста заявки :)
Трябва да минат поне 48 часа, за да мога да кажа поне в процентно отношение колко е оптимизацията. В панела при писане на нова публикация се усеща веднага. Данни в милисекунди не могат да се дадат, защото зависи от големината на базата данни.
-
Изхождайки от факта, че никой не пише повече от една/две стойностни статии на ден в блога си и съществува бутон preview, честно не виждам къде е болката в това като натиснеш „публикувай“ нещото да се случи след 1 секунда :)
А иначе от другата страна на барикадата са различните плъгини за кеширане и сервиране на хтмл наместо пхп и подобните им, което също спестява ресурси и зарежда много бързо.
-
Марти, не ти се струва нужно защото не си виждал как се държи уърдпресс с 5-6000 поста вътре. Да не говорим че има и с повече.
-
Така е, аз съм още под 100. Като кача карма ще му мисля :)
-
Бих искала само да кажа благодаря на Васил Тошков за статията и на Атанас Янев за плъгина. Тъй като нямам представа какво означава да „изпълниш заявка в базата данни на блога“, комбинацията от съветите на двамата беше перфектна :)
-
Анастас Мавродиев на 21.11.2009 16:42
Здравей. Тъй като съм начинаещ реших да пробвам само със стъпка 1. Качих приложението ти на сървъра си ( като отделен файл). Но в контролния панел все още ми се появява директорията Post revisions.
-
Използвай вградения инсталатор на разширения от ZIP файлове. За целта отиваш в Разширения -> Добавяне на още -> качване (бутона отгоре).
-
Полезна тема благодаря за което , но и аз като Мартин се питам за блог с колко поста най-малко си заслужава да се занимава човек с това?Примерно за блог със около 200 поста ще даде ли някакъв ефект?
-
Най-добре още при първоначалната инсталация да изпълниш точка 1 и базата ти данни да остане непокътната и чиста от различни „версии на публикацията“. При мен дава ефект, дори на блогове с под 200 поста.
-
А може ли само да спра версиите отсега нататък, без да трия досегашните? Че като се знам каква съм „чистница“, ще взема без да искам да си затрия целия блог… Иначе за новите си блогове ще пробвам да изпълнявам 1 още при създаването, но личният ми блог има около 200 публикации и ми се ще да не стават по-малко. ;-)


