Need viis trikki teevad WordPressi kiiremaks

Foto: Pixabay

Peeter Marvet, kes aitab aeglaselt avanevaid ja otsirobotite koorma all ägavaid veebe elule äratada iganädalaselt, jagab viit peamist nippi, mida teades õnnestub WordPressile kiirust juurde anda.

Kasuta SSH-d

Mistahes probleemi lahendamine algab selle olemuse mõistmisest ja veebiserveri puhul ei saa läbi logide ja serveri koormuse uurimiseta. Selle juures tuleb appi võtta SSH ehk käsurida.

Käsurealt saab reaalajas vaadata aktiivseid protsesse, andmebaasi- ja veebipäringuid, samuti otsida huvipakkuvaid mustreid kui tahes suurtest logifailidest, mille FTP-ga allalohistamine võtaks aega ja mis tavapärased tekstiredaktorid kokku jooksutaks.

Kui kasutusel on Mac OS või Linux, on mugavaim õpetus GitHubi Generating a new SSH key and adding it to the ssh-agent (abi vajades võib googeldada “github ssh key“. Kui vajalik on Windowsi, PuTTY ja Zone-spetsiifilisem abi, leiab Zone’i abitekstidest juhise SSH ühenduse loomine.

Trikk #0 – vaata logisid!

Mis toimub selles serveris:

cd domeenid/www.example.com/logs/
tail -f apache.ssl.access.log | grep-php

Käsk tail kuvab faili lõppu ja -f värskendab väljundit jooksvalt, | grep-php otsib tulemusest päringuid, mis käivitasid PHP ehk veebirakenduse:

Nagu näha, käib pidev lammutaminewp-login.phpkallal, lisaks hakkavad silmawp-cron.php ehk ajastatud tegevused ja hulk erinevaid (otsi)roboteid: Yandex, Bing, DuckDuckGo, Ahrefs, Semrush. Õnneks on veebis rea lõpus olev ajakulu suurusjärgus 0,02–0,15 sekundit ehk olematu. Kui aeg hakkab olema üle sekundi, võivad botid kergesti kurja teha.

grep-php, grep-phpslow ja grep-phpveryslow on Zone’i serverites seadistatud aliased, mis aitavad leida PHP- või aeglase PHP-päringuid. Kui neid on vaja seadistada oma arvutis või mujal, siis käskaliasnäitab retsepti.

Trikk #1 – asenda wp-cron.php süsteemse cronjob’iga

Näitlikustamiseks ka üks teine sait jagrep-phpslowannab järgmise tulemuse:

Ouch! 10–50 sekundit töötav cron-päring hõivab ühe veebi teenindamiseks mõeldud PHP-protsessidest – mõistlikum oleks seadistada süsteemne CRONTAB. Sellest räägib eraldi help.zone.eu artikkel WordPressi cron-tööde seadistamine.

Trikk #2 – piira robots.txt abil botte

Kuigirobots.txton rangelt soovituslik, tuleb nentida, et suur hulk logides silma hakkavaid botte käituvad igati viisakalt ehk loevad vähemalt kord nädalasrobots.txtfaili ja arvestavad selle suunistega.

Soovituslik on kõigil robotitel mitte pärida sagedamini kui 10 sekundi takka ning keelata päringud, milles sisaldub?ehk millele on lisatud mingid parameetrid, olgu selleks siiss=otsisõnavõicolor=pink&size=42kujul e-poe filtrid.

User-Agent: *
Crawl-delay: 10
Disallow: /*?*

User-agent: AhrefsBot
User-agent: AhrefsSiteAudit
User-agent: SEMrushBot
User-agent: SemrushBot
User-agent: SemrushBot-SA
User-agent: MJ12bot
Disallow: /

Täiendavalt võib keelata konkreetse veebi jaoks väärtust mitte omavad botid, nt kui eita kasuta Ahrefs ja Semrush SEO-tööriistu, on kogu nende tekitatav koormus vesi konkurentide veskile – ja miks neid nuumata?

robots.txtpuhul tuleks meeles pidada, et tühi reavahetus ei ole ilu pärast, vaid eristab erinevatele bottidele suunatud plokke jaUser-Agent: *reegel kehtib vaid neile, kes endale sobilikku plokki ei leia.

Trikk #3 – kiireks ja jõuliseks piiramiseks kasuta .htaccess’i

Vahel ei pruugi robots.txt piisav olla, sest seda kontrollitakse periooditi, samas kui koormusprobleem on valus just täna. Kuna viisakad botid panevad oma nimeUser-Agent’isse kirja, saab veebiserverile anda korralduse neile sobilikku veateadet näidata.

Selleks tuleb veebi juurkataloogis olevasse.htaccessfaili lisada nimekiri soovimatutestUser-Agent’idest ning lubada neile ligipääs ainultrobots.txt’ile – lootuses, et nad tulevikus sellega arvestama hakkavad:

RewriteEngine On
RewriteCond %{REQUEST_URI} !/robots.txt$
RewriteCond %{HTTP_USER_AGENT} Semrush [NC,OR]
RewriteCond %{HTTP_USER_AGENT} AhrefsBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} AhrefsSiteAudit [NC,OR]
RewriteCond %{HTTP_USER_AGENT} MJ12bot [NC]
RewriteRule .* - [R=503,L]

Trikk #3a – piira hiinabottide ligipääs

Kohati kohtab eriti agressiivseid botte, mis tulevad hulgalt erinevatelt IP-delt, ei huviturobots.txt’ist ega evi äratuntavatUserAgent’i.

Sageli tulevad need botid Hiina IP-aadressidelt. Zone’is on veebiserver seadistatud nii, et igal päringul on automaatslet küljes IP-aadressile vastav maakood, miska on lihtne lisada .htaccess faili järgmine plokk:

SetEnvIf MM_COUNTRY_CODE ^(CN) countryBlock
Deny from env=countryBlock

Ehk kui maakood algabCN’iga, siisDeny.

See vähendab kindlasti olulisel määral müüki Hiina, aga küllap tulevad hiinlaste hordid Helsingi lennujaama ja Talsinki tunneli kaudu peagi ise kohale, seegano harm done.

Trikk #3b – brauseri-cache ilma pluginata

Kui .htacces juba editoris lahti on, tasub teha üks pisiparandus. Nimelt saab väga lihtsalt brauseritele öelda, et ei ole vaja igal lehekuvamisel käia küsimas, kas mõni pilt või CSS on muutunud:

<IfModule mod_expires.c>
# Enable expirations
  ExpiresActive On
# Default directive
  ExpiresDefault                 "access plus 1 day"
# HTML
  ExpiresByType text/html        "access plus 0 seconds"
# Data
  ExpiresByType text/xml         "access plus 0 seconds"
  ExpiresByType application/xml  "access plus 0 seconds"
  ExpiresByType application/json "access plus 0 seconds"
# Favicon
  ExpiresByType image/x-icon     "access plus 1 year"
# Images
  ExpiresByType image/gif        "access plus 1 month"
  ExpiresByType image/png        "access plus 1 month"
  ExpiresByType image/jpg        "access plus 1 month"
  ExpiresByType image/jpeg       "access plus 1 month"
# CSS
  ExpiresByType text/css         "access plus 1 hour"
# Javascript
  ExpiresByType application/javascript "access plus 1 year"
</IfModule>

Trikk #4 – vaata, mis toimub wp_options tabelis

WordPressi puhul võiks edasi liikuda mitmes suunas: pagebuilder, WPML, turvaplugin, megamenüü. Aga jäägu need hilisemaks. Kogenud koristaja võtab esimese asjana ettewp_optionstabeli, sest:

  • sinna salvestatakse vaikimisi kogu “ajutine” kraam nn transient’idena;
  • transient’ide suurus võib olla kuni 100 megabaiti – ja seda üks kirje;
  • neid kirjeid või olla kümneid tuhandeid;
  • isegi kui progejad on arvestanud aegumise järel kustutamisega, võib see käiawp-cron’ile üle jõu;
  • seal on veergautoloadmis ei ole indekseeritud, ehk igal lehekuvamisel peab SQL otsima kümnete tuhandete ridade hulgast neid, mille indekseerimata väärtus onyes;
  • kirjeid võidakse uuendada igal päringul või ajastatud toimingul, mille tulemusena kasvab andmebaas kontrollimatult (näiteks 1 ööga 100 gigabaiti).

Ehk kuiwp_optionson suurem kui umbes 1500 kirjet ja kirje sisu üle mõnesaja kilobaidi, on tegemist olulise probleemiga.

Trikk #5 – vaata, mida kood teeb

Viiendaks on soovitatav tutvuda artikliga Miks mu veeb aeglane on? Vaata BlackFire abil järgi!

Trikk #6 – tule Pop-up Helpdesk’i!

Tegelikult on olemas ka kuues trikk – peaaegu igal esmaspäeval kell 15–19 on Peeter Marvet Tallinnas SpringHub’is ja aitab Pop-up Helpdesk’is kõiki, kes viitsivad kohale tulla ja abi küsida.

Konkreetset kuupäeva tasub Zone FB lehelt ürituste sakist igaks juhuks kontrollida.

Populaarsed lood mujal Geeniuses

Igal argipäeval

Ära jää ilma päeva põnevamatest lugudest

Saadame sulle igal argipäeval ülevaate tehnoloogia-, auto-, raha- ja meelelahutusportaali olulisematest lugudest.