Възможност за изпълнение в WordPress - WP Magazine

За WordPress на руски език

Таблицата с опции в WordPress съдържа всички настройки за вашия уебсайт, теми и приставки. Той може да съхранява както прости знамена (да/не), така и по-големи данни, понякога дори регистрационни файлове. API за работа с опции в WordPress е много прост, може да бъде обобщен в два реда:

Но това е само повърхност, тъй като вътрешният механизъм за работа с опции е много по-сложен и поради това много, дори опитни разработчици, правят редица критични грешки, които могат да доведат до забавяне на WordPress сайтовете и прекомерна памет консумация.

Фатална грешка: Разрешеният размер на паметта от 134217728 байта е изчерпан

Разбира се, можете да се свържете с вашия доставчик на хостинг, да поискате да увеличите лимита на паметта до 256 мегабайта, след което дори повече, повече и повече. Но по този начин временно скривате проблема, а не го решавате.

Как работят опциите в WordPress

WordPress има таблица wp_options, структурата му е съвсем проста:

Когато извикаме функцията get_option () в WordPress, получаваме стойността на опцията по ключ от базата данни, но тук си струва да запомним едно много важно нещо: опции с флага за автоматично зареждане зарежда се автоматично в паметта при зареждане на ядрото на WordPress за това отговаря вътрешната функция wp_load_alloptions ().

Това означава, че при достъп до опцията siteurl в нашата тема или приставка WordPress, резултатът ще бъде върнат директно от кеша на обекта, а не от базата данни MySQL.

Този подход е категоричен плюс за опциите, които ние (ядрото, нашата тема, нашите приставки) възнамеряваме да използваме за показване на текущата страница в WordPress. Това предотвратява ненужните посещения на базата данни MySQL за всяка необходима опция.

Но какво да кажем за опциите, които заредихме в паметта, но никога не ги използвахме? Те просто консумират нашите ресурси.

Какво да направя по въпроса?

Едва ли има страница, която да изисква абсолютно всички опции за автоматично зареждане, и повечето от страниците на вашия сайт на WordPress вероятно ще използват много по-малко от половината от всички опции за автоматично зареждане и това е нормална практика.

Проблемите с производителността не се дължат на техния брой. Нека се върнем към нашия API за работа с опциите на WordPress, нека вземем прост плъгин, който реши да напише лентата на стойността в опцията foo:

Много разработчици дори не се замислят дали такава опция ще се зареди автоматично. Необходима ли е тази опция за показване на повечето страници на сайта и колко "допълнителна" памет ще консумира тази опция.

Не забравяйте, че когато използвате update_option () или add_option (), флагът за автоматично зареждане е зададен по подразбиране за нови опции. И когато деактивирате или изтриете тема или приставка, опцията (като правило) не изчезва никъде. Ако трябва да създадете опция без автоматично зареждане, използвайте четвъртия аргумент на функцията add_option ().