apeescape2.com
  • Põhiline
  • Inimesed Ja Meeskonnad
  • Tehnoloogia
  • Kasumlikkus Ja Tõhusus
  • Tulud Ja Kasv
Tagumine Ots

Täpsem juhend WordPressi arenduse optimeerimiseks

Täna kasutab WordPress 33% Internetist . Seda on lihtne kasutada, see on väga populaarne ja te ei lähe niipea kuhugi.

Kuid Wordpress võib olla aeglane. Kuidas siis seda optimeerida?



corp c vs corp s

WordPressi optimeerimise kohta on palju artikleid. Tegelikult pakub WordPress ise a kindel juhend kuidas optimeerida.



Enamasti hõlmavad need artiklid ja õpetused üsna põhilisi ja samas kasulikke mõisteid. Selline on vahemälu pistikprogrammide kasutamine, integreerimine sisuteenuse edastusvõrkudega (CDN) ja taotluste minimeerimine. Kuigi need näpunäited on väga tõhusad ja isegi vajalikud, ei lahenda need põhiprobleemi; Enamik aeglaseid Wordpressi saite on halva või ebaefektiivse kodeerimise tulemus.

Täpsem juhend WordPressi jõudluse optimeerimiseks



Wordpress võib olla aeglane, kuid see ei pea olema. Piiksuma

Seetõttu on see artikkel mõeldud peamiselt arendajatele ja Wordpressi arendajad mõned juhised, mis aitavad teil lahendada paljude WordPressi jõudlusprobleemide põhjuseid.

WordPress pakub palju jõudlusele suunatud funktsioone, mida arendajad sageli tähelepanuta jätavad. Kood, mis ei võimalda teil neid funktsioone kasutada, võib aeglustada lihtsamaid ülesandeid, näiteks töökohtade hankimist. Selles artiklis kirjeldatakse nelja võimalikku lahendust, mis käsitlevad mõningaid WordPressi aeglase jõudluse taga olevaid probleeme.

Töökohtade hankimine

WordPress pakub võimalust andmebaasis igat tüüpi positsioone otsida. Selleks on kolm põhilist viisi:



  • Funktsiooni 'query_posts ()' kasutamine: See on väga otsene lähenemine, kuid probleem on selles, et see alistab päringu peamine mis võib tekitada ebamugavusi. Näiteks võib see olla probleem, kui tahame pärast postituste saamist (nagu 'footer.php' sees) mingil hetkel kindlaks teha, millist tüüpi lehega tegu. Tegelikult on ametlikus dokumentatsioonis soovitatav märkida selle funktsiooni kasutamisest keeldumine, kuna algse päringu taastamiseks peate kutsuma lisafunktsiooni. Samuti mõjutab põhipäringu asendamine lehe laadimisaega negatiivselt.

  • Funktsiooni 'get_posts ()' kasutamine: See töötab peaaegu nagu 'query_posts ()', kuid see ei muuda peamist päringut. Teiselt poolt täidab ‘get_posts ()’ vaikimisi päringu ‘suppress_files’, parameetriks on seatud ‘true’. See võib põhjustada vasturääkivusi, eriti kui kasutame oma koodis päringutega seotud filtreid, kuna need funktsioonid tagastavad postitused, mida te lehel ei oota.

  • Klassi ‘WP_query’ kasutamine: Minu arvates on see parim viis postituste andmebaasist hankimiseks. See ei muuda põhipäringut ja täidetakse standardsel kujul, nagu ka kõik muud WordPressi päringud.

Kuid ükskõik millist meetodit me andmebaasiga suhtlemiseks kasutame, tuleb arvestada ka muude asjadega.

Päringu piiramine

Peame alati täpsustama, mitu postitust meie päring peaks tooma.

Selleks kasutame parameetrit 'postitused lehel'.

WordPress võimaldab meil selle parameetri võimaliku väärtusena näidata -1, sel juhul proovib süsteem hankida kõik sõnumid, mis vastavad määratletud tingimustele.

See pole hea tava, isegi kui oleme kindlad, et saame vastuseks vaid vähe tulemusi.

Esiteks võib harva olla tõsi, et lihtsalt uuesti tulemusi saada. Isegi kui suudame piirnormi seada, nõuab see andmebaasimootorilt kogu andmebaasi vasteteks sõelumist.

Seevastu tulemuste piiramine võimaldab andmebaasimootoril andmeid vaid osaliselt sõeluda, mis tähendab vähem töötlemisaega ja kiiremat reageerimist.

Teine asi, mida WordPress vaikimisi teeb, on see, et see võib jõudlust negatiivselt mõjutada, kuna see püüab tuua kleepuvaid postitusi ja arvutada, mitu rida päringus on.

Kuid me ei vaja seda teavet tegelikult väga tihti. Nende kahe parameetri lisamine on nende funktsioonide keelamine ja meie päringu kiirendamine:

$query = new WP_Query( array( 'ignore_sticky_posts' => true, 'no_found_rows' => true ) );

Postituste väljajätmine päringust

Wordpress välistab päringud postitused

Mõnikord soovime päringust teatud postitused välja jätta. WordPress pakub selleks kena otsekohese viisi: parameetriga 'post__no_en'. Näiteks:

$posts_to_exclude = array( 1, 2, 3 ); $posts_per_page = 10; $query = new WP_Query( array( 'posts_per_page' => $posts_per_page, 'post__not_in' => $posts_to_exclude ) ); for ( $i = 0; $i posts ); $i++ ) { //do stuff with $query->posts[ $i ] }

Kuigi see on üsna lihtne, pole see optimaalne, sest see genereerib siseküsimuse. Eriti suurtes rajatistes võib see reageerida aeglaselt. Kiirem on lubada töötlemist PHP tõlgi abil teha mõne lihtsa modifikatsiooniga:

$posts_to_exclude = array( 1, 2, 3 ); $posts_per_page = 10; $query = new WP_Query( array( 'posts_per_page' => $posts_per_page + count( $posts_to_exclude ) ) ); for ( $i = 0; $i posts ) && $i posts[ $i ]->ID, $posts_to_exclude ) ) { //do stuff with $query->posts[ $i ] } }

Mida ma siin tegin

Põhimõtteliselt eemaldasin mõned andmebaasimootori töökohad ja jätsin selle paika PHP-mootori jaoks, mis teeb samu asju, kuid mällu, mis on palju kiirem.

Kuidas?

Esiteks eemaldasin päringust parameetri 'post__no_en'.

Kuna päring võib tuua meile mõned postitused, mida me selle tulemusena ei soovi, olen suurendanud parameetrit „posts_per_page”. Nii saan tagada, et isegi kui mul oleks vastuses soovimatuid postitusi, sooviksin, et sinna on pandud vähemalt '$ posts_per_page wish'.

Niisiis, kui otsin postitusi ja töötlen ainult neid, mis pole massiivi '$ posts_para_exclude' sees.

Vältige kompleksset parameetrite määramist

Kõik need päringumeetodid pakuvad ametikohtade saamiseks väga erinevaid võimalusi: kategooriate, metavõtmete või väärtuste, kuupäeva, autori jne järgi.

Paindlikkus on väga võimas funktsioon, seetõttu tuleks seda kasutada ettevaatusega, kuna see võib kaasa tuua keeruliste tabeliliidete parameetrite määramise ja kulukad andmebaasitoimingud.

Järgmises osas kirjeldan elegantselt, kuidas sarnast funktsionaalsust saavutada jõudlust kahjustamata.

Wordpress Valikute maksimaalne kasutamine.

Valikud WordPress WordPressi API pakkuda hulgaliselt tööriistu andmete hõlpsaks laadimiseks või salvestamiseks. Need on kasulikud väikeste infokildude käsitlemiseks, kuna muud WordPressi pakutavad mehhanismid (näiteks postitused või taksonoomiad) on liiga keerulised.

Optimeeritud Wordpressi valikud

Näiteks kui soovime päisesse salvestada autentimisvõtme või oma saidi taustavärvi, on valikud need, mida otsime.

WordPress annab meile mitte ainult selle haldamiseks vajalikud funktsioonid, vaid võimaldab meil seda teha ka kõige tõhusamal viisil.

Mõned valikud laaditakse isegi otse, kui süsteem käivitub pakkudes seeläbi kiiremat juurdepääsu (uue võimaluse loomisel peame kaaluma, kas tahame automaatse laadimist või mitte).

Mõelgem näiteks saidile, kus meil on kindlaksmääratud karussell, mis kuvab selle taga uudiseid. Meie esimene sisetunne oleks kasutada peamist eesmärki järgmiselt:

// functions.php add_action( 'save_post', function ( $post_id ) { // For simplicity, we do not include all the required validation before saving // the meta key: checking nonces, checking post type and status, checking // it is not a revision or an autosaving, etc. update_post_meta( $post_id, 'is_breaking_news', ! empty ( $_POST['is_breaking_news'] ) ); } ); // front-page.php $query = new WP_Query( array( 'posts_per_page' => 1, 'meta_key' => 'is_breaking_news' ) ); $breaking_news = $query->posts[0] ?: NULL;

Nagu näete, on see meetod väga lihtne, kuid see pole optimaalne. Andmebaasi tehakse päring, mis püüab leida postitust kindla metavõtmega. Sarnase tulemuse saamiseks võiksime kasutada võimalust:

// functions.php add_action( 'save_post', function ( $post_id ) { // Same comment for post validation if ( ! empty ( $_POST['is_breaking_news'] ) ) update_option( 'breaking_news_id', $post_id ); } ); // front-page.php if ( $breaking_news_id = get_option( 'breaking_news_id' ) ) $breaking_news = get_post( $breaking_news_id ); else $breaking_news = NULL;

Funktsionaalsus varieerub näidetes veidi.

Koodi esimeses osas saame alati värskeimad uudised postituse avaldamise kuupäeva osas.

Teises osas kirjutatakse iga kord, kui uus postitus ilmub uudisena, eelmiste uudistega üle.

Kuid kuna me tahame ilmselt ühte uudist välku korraga, pole see probleem.

Ja lõpuks oleme muutnud raske andmebaasipäringu (kasutades metaklahvidega 'WP_QUERY') lihtsaks ja arusaadavaks päringuks (kutse 'get_post ()', mis on parem ja tõhusam lähenemine.

Võiksime teha ka väikese muudatuse ja kasutada valikute asemel transiente.

Transiendid töötavad sarnaselt, kuid võimaldavad meil määrata aegumisaega.

Näiteks täiuslikult kohandatud uudiste puhul, kuna me ei soovi vana postitust kui uudiseid ja kui jätame selle uudise muutmise või eemaldamise ülesandeks administraatori, võib [ta] unustada seda teha . Nii saame kahe lihtsa muudatusega lisada aegumiskuupäeva:

// functions.php add_action( 'save_post', function ( $post_id ) { // Same comment for post validation // Let's say we want that breaking news for one hour // (3600 = # of seconds in an hour). if ( ! empty ( $_POST['is_breaking_news'] ) ) set_transient( 'breaking_news_id', $post_id, 3600 ); } ); // front-page.php if ( $breaking_news_id = get_transient( 'breaking_news_id' ) ) $breaking_news = get_post( $breaking_news_id ); else $breaking_news = NULL;

Aktiveerige püsiv vahemälu

WordPressil on algselt vahemälumehhanism objekt .

Näiteks valikud salvestatakse selle mehhanismi abil vahemällu.

Kuid vaikimisi pole vahemälu püsiv, see tähendab, et see elab ainult ühe päringu vältel. Kõik andmed on vahemällu salvestatud, et kiiremini juurde pääseda, kuid on saadaval ainult selle taotluse ajal.

Püsiva vahemälu illustratsioon

Püsiva vahemälu tugi nõuab püsiva vahemälu pistikprogrammi installimist.

Mõne täislehe vahemälu pistikprogrammiga on kaasas püsiv vahemälu pistikprogramm (näiteks W3 kogu vahemälu), kuid teistel seda pole ja me peame selle eraldi installima.

Kui kavatseme andmete vahemällu salvestamiseks kasutada selliseid faile nagu Memcache või mõnda muud mehhanismi, sõltub meie platvormi arhitektuur, peame seda hämmastavat funktsiooni ära kasutama.

Võite endalt küsida: 'Kui see on suurepärane WordPressi funktsioon, siis miks pole see vaikimisi lubatud?'

Peamine põhjus on see, et sõltuvalt meie platvormi arhitektuurist töötavad mõned vahemälutehnikad ja teised mitte.

Kui soovime oma saidil hostida näiteks hajuserverit, peame kasutama välist vahemälusüsteemi (näiteks a Mälukaardiga server ), kuid kui meie veebisait asub ühes serveris, võiksime säästa raha ja kasutada lihtsalt vahemälufailide süsteemi.

Üks asi, mida peame arvestama, on vahemälu aegumine. See on püsiva vahemäluga töötamise kõige tavalisem lõk.

Kui me ei lahenda seda õigesti, kaebavad meie kasutajad, et nad ei näe tehtud muudatusi või et nende muudatuste rakendamine võttis liiga kaua aega.

Mõnikord leiame end jõudluse ja dünaamika tasakaalustamises, kuid isegi nende takistuste korral peaks püsiv vahemällu salvestamine olema midagi, mida praktiliselt iga WordPressi install peaks ära kasutama.

AJAXing kiireim viis

Kui peame AJAXi kaudu oma veebisaidiga WordPressiga suhtlema pakub mõningast abstraktsiooni serveris päringu töötlemise ajal.

Kuigi neid tehnikaid saab kasutada tagatööriista programmeerimisel või esiotsa vormide esitamisel, tuleks neid vältida, kui need pole tingimata vajalikud.

Selle põhjuseks on see, et nende mehhanismide kasutamiseks peame tegema postitustaotluse kausta “wp-admin” asuvasse faili. Enamikul (kui mitte kõigil) Wordpressi pistikprogrammidel pole täislehe vahemälu ega postitaotluste vahemälu ega failihalduri kõnesid.

Näiteks kui soovime dünaamilisemaid laadimispostitusi, kui kasutaja navigeerib meie avalehele, oleks parem helistada otse mõnele muule esilehele, mis saab vahemällu salvestamise eeliseid.

Siis saaksime tulemusi brauseris JavaScripti abil sõeluda.

kuidas flexboxi CSS-is kasutada

Jah, me saadame rohkem andmeid kui vaja, kuid töötlemiskiiruse ja reageerimisaja osas võidame.

Hävitage mõte, et WordPress on aeglane

Need on vaid mõned näpunäited, mida arendajad peaksid kodeerimisel meeles pidama WordPress .

Mõnikord unustame, et meie pistikprogrammi või teemat on vaja teiste pistikprogrammidega koos elamiseks või et meie veebisaiti saab teenindada hostimisettevõte, mis teenindab sadu või tuhandeid muid ühise andmebaasiga saite.

Keskendusime lihtsalt sellele, kuidas pistikprogramm peaks töötama, mitte sellele, kuidas see selle funktsionaalsusega tegeleb või kuidas seda a-s teha tõhus .

Eelnevalt arutatu põhjal on selge, et WordPressi halva jõudluse põhjused on halb ja ebaefektiivne kood. Kuid WordPress pakub oma erinevate API-de kaudu kõiki vajalikke funktsioone, mis aitavad meil paljusid üles ehitada pluss arenduspluginaid ja teemasid, ilma et see kahjustaks platvormi üldist kiirust.

Vilgas riistvara koos sisseehitatud tarkvaraarendusega

Protsess Ja Tööriistad

Vilgas riistvara koos sisseehitatud tarkvaraarendusega
Eelseisev kommertsrobotite revolutsioon

Eelseisev kommertsrobotite revolutsioon

Finantsprotsessid

Lemmik Postitused
Nurga vs. Reageerige: mis on veebiarenduse jaoks parim?
Nurga vs. Reageerige: mis on veebiarenduse jaoks parim?
Pood UX mobiilse kasutuskogemuse jaoks
Pood UX mobiilse kasutuskogemuse jaoks
Eliksiiri programmeerimiskeelega alustamine
Eliksiiri programmeerimiskeelega alustamine
Krüptoraha mannekeenidele: Bitcoin ja kaugemalgi
Krüptoraha mannekeenidele: Bitcoin ja kaugemalgi
Andmebaaside ränne: Röövikute muutmine liblikateks
Andmebaaside ränne: Röövikute muutmine liblikateks
 
RxSwift ja animatsioonid iOS-is
RxSwift ja animatsioonid iOS-is
Tarkvara kulude hindamine agiilses projektijuhtimises
Tarkvara kulude hindamine agiilses projektijuhtimises
Disainmõtlemise väärtus ettevõtluses
Disainmõtlemise väärtus ettevõtluses
Xamarin Forms, MVVMCross ja SkiaSharp: platvormidevaheliste rakenduste arendamise püha kolmainsus
Xamarin Forms, MVVMCross ja SkiaSharp: platvormidevaheliste rakenduste arendamise püha kolmainsus
API-d sotsiaalsetes võrgustikes: Interneti-portaal reaalsesse maailma
API-d sotsiaalsetes võrgustikes: Interneti-portaal reaalsesse maailma
Lemmik Postitused
  • õppida, kuidas kodeerida c-s
  • c ++ roboti programmeerimine
  • visualiseerimise tööriistad suurandmete jaoks
  • kui palju on veebis tutvumise veebisaite
  • suurepärase ux-disaini näited
  • pythoni masinõpe näite järgi
Kategooriad
Kpi-D Ja Analytics Disaineri Elu Toote Elutsükkel Vilgas Talent Puldi Tõus Investorid Ja Rahastamine Mobiilne Disain Jaotatud Võistkonnad Töö Tulevik Mobiilne

© 2021 | Kõik Õigused Kaitstud

apeescape2.com