6. modulis · 6.3
Attēli, PHP un citi ātrdarbības uzlabojumi
6. modulis: Ātrdarbība · Lasīšanas laiks: 9 minūtes
Mācību mērķis: Pēc šīs nodarbības Jūs varēsiet piemērot lielākos atlikušos ātrdarbības uzlabojumus un izmērīt to efektu.
Galvenie jēdzieni: attēlu optimizācija, WebP un AVIF, lēnā ielāde (lazy loading), LCP attēls, fetchpriority, PHP versija, datubāzes sakārtošana (versijas, transients, autoload), WP-Cron, īstais cron, DISABLE_WP_CRON, ārējie fonti, Heartbeat
Strādājiet pareizā secībā
Pēc lapu kešatmiņas (nodarbība 6.2) šie ir uzlabojumi, kas dod vislielāko labumu, aptuveni sakārtoti pēc piepūles un efekta attiecības:
- attēli kārtībā;
- aktuāla PHP versija;
- mazāk ārējo elementu un smagu spraudņu;
- sakārtota datubāze;
- ieplānoti uzdevumi uz īsta cron.
Mēriet pirms un pēc katra soļa (nodarbība 6.1), citādi nezināsiet, kas palīdzēja. Un veiciet vienu lietu vienlaikus.
Attēli: lielākais ieguvums pārlūkprogrammā
Lielākajā daļā lapu attēli veido vislielāko daļu no tā, ko apmeklētājs lejupielādē. Tas, ko apguvāt nodarbībā 4.4, šeit atmaksājas:
- Pareizs izmērs: neaugšupielādējiet lielāku, nekā nepieciešams, un ļaujiet WordPress ar srcset piedāvāt mazākus formātus.
- Saspiešana un formāts: WebP parasti ir ievērojami mazāks nekā JPEG ar vienādu kvalitāti; AVIF bieži vēl mazāks. Spraudnis var pārveidot esošos attēlus un sniegt mazāko versiju pārlūkprogrammām, kas to atbalsta. Pārbaudiet, vai pārveidošana notiek Jūsu serverī vai pie ārēja pakalpojuma sniedzēja.
- Lēnā ielāde (lazy loading), bet ne visam. WordPress automātiski piešķir attēliem
loading="lazy", izņemot pirmo lielo attēlu augšpusē. Šis attēls bieži ir LCP elements (nodarbība 6.1): lielākais satura gabals, ko apmeklētājs redz pirmo. Ja tas tiek ielādēts lēni, pārlūkprogramma ar to tieši nogaida, un Jūsu LCP pasliktinās. Tāpēc WordPress bieži piešķir LCP kandidātamfetchpriority="high", lai pārlūkprogramma to ielādētu pirmo.
<img src="hero-1536x864.webp" width="1536" height="864"
fetchpriority="high" alt="Darbnīca ar velosipēdiem rindā">
<img src="team-768x512.webp" width="768" height="512"
loading="lazy" alt="Komanda veikala priekšā">Viens slazds: dažas tēmas, lapu veidotāji un optimizācijas spraudņi piešķir lēno ielādi arī pirmajam attēlam vai ielādē lielo attēlu kā fonu caur CSS (to atklāj vēlāk). PageSpeed Insights sadaļā LCP Jūs redzēsiet, kurš elements tas ir un vai tas tiek ielādēts lēni.
PHP: bezmaksas ātrdarbība
Katra jauna lielā PHP versija ir ātrāka nekā iepriekšējā, un WordPress tīmekļa vietnes no tā gūst labumu uzreiz, nemainot neko Jūsu tīmekļa vietnē. Turklāt vecās versijas vairs nesaņem drošības atjauninājumus (nodarbība 8.4). Ja pārejat uz jaunu versiju, pārbaudiet, vai Jūsu spraudņi un tēma to atbalsta, un labāk vispirms izmēģiniet to testa vidē (staging).
PHP iestatījumos pievērsiet uzmanību arī:
- OPcache: pie lielākās daļas mitināšanas (hostings) pakalpojumu sniedzēju ir ieslēgts pēc noklusējuma. Sekas: izmainīts PHP fails var prasīt kādu laiku, pirms PHP sāk izmantot jauno versiju.
- memory_limit: pārāk zems rada kļūdas smagām lapām; ļoti augsts Jūsu tīmekļa vietni ātrāku nepadara.
Ārējie elementi un smagi spraudņi
Katrs cita pakalpojuma sniedzēja elements ir papildu savienojums un papildu gaidīšanas laiks: fonti no ārēja pakalpojuma, iegults video, tērzēšanas (chat) sīkrīks, mērīšanas kodi, sociālo tīklu pogas, karte. Jautājumi par katru elementu:
- Vai tas ir nepieciešams? Video, ko gandrīz neviens neatskaņo, var aizstāt ar attēlu un saiti.
- Vai to var darīt lokāli? Fontus parasti var izvietot savā serverī (ar spraudni vai, bloku tēmai, caur theme.json). Tas ietaupa savienojumu un ir labāk Jūsu privātumam (nodarbība 9.3).
- Vai to var ielādēt vēlāk? Tērzēšanas sīkrīks vai video var ielādēties tikai pēc klikšķa.
Spraudņu gadījumā mērīšanā palīdz X-Ray (mitināšanai ar CloudLinux) vai spraudnis, piemēram, Query Monitor (ieslēdziet uz laiku, redzams tikai administratoriem). Tie parāda, kurš spraudnis prasa visvairāk datubāzes vaicājumu vai laika.
Datubāzes sakārtošana
Datubāze aug ar lietām, ko Jūs neredzat:
- Versijas (nodarbība 4.1): katra saglabātā katras lapas versija. Ierobežojiet tās ar
WP_POST_REVISIONSun sakārtojiet vecās. - Surogātpasta un atkritumu komentāri, un ziņas atkritumos.
- Transients: spraudņu pagaidu dati
wp_optionstabulā, kas dažreiz netiek sakārtoti. - Autoload: opcijas
wp_optionstabulā ar ieslēgtuautoloadtiek ielādētas uzreiz katrā pieprasījumā. Spraudņi, ko jau sen esat izdzēsis, dažreiz tur atstāj lielu datu apjomu. Vietnes veselība (nodarbība 5.4) brīdina, ja autoload dati ir ļoti lieli. - Žurnāla tabulas no spraudņiem (statistika, drošības žurnāli, e-pasta žurnāli), kas nekad netiek iztukšotas.
Sakārtošanu var veikt ar sakārtošanas spraudni, ar WP-CLI (wp transient delete --expired, wp post delete $(wp post list --post_type=revision --format=ids) --force) vai ar phpMyAdmin optimizācijas funkciju pašām tabulām. Vienmēr vispirms izveidojiet rezerves kopiju. Nedzēsiet neko, par ko nezināt, kas tas ir.
Ieplānotie uzdevumi: WP-Cron
WordPress ir uzdevumi, kam jādarbojas noteiktā laikā: ieplānotas ziņas publicēšana, atjauninājumu pārbaude, rezerves kopiju spraudņa darbība. To sauc par WP-Cron. Pēc noklusējuma WP-Cron nedarbojas pēc pulksteņa, bet gan pie apmeklējuma: katrā lapas pieprasījumā WordPress pārbauda, vai ir gatavs kāds uzdevums. Divi trūkumi:
- Pie maza apmeklētāju skaita uzdevumi darbojas par vēlu (ieplānota ziņa parādās tikai pie nākamā apmeklējuma).
- Pie liela apmeklētāju skaita pārbaude notiek ļoti bieži, un smags uzdevums var tieši palēnināt lapu apmeklētājam.
Labāk: izslēdziet WP-Cron darbošanos pie apmeklējumiem un ļaujiet īstam servera cron uzdevumam to palaist ik pēc piecām vai desmit minūtēm. Failā wp-config.php (virs "beidziet rediģēt"):
define( 'DISABLE_WP_CRON', true );Un Jūsu mitināšanas paneļa cron ekrānā izveidojiet uzdevumu, ik pēc 10 minūtēm:
*/10 * * * * /usr/local/bin/php /home/gebruiker/domains/example.com/public_html/wp-cron.php >/dev/null 2>&1Ceļš uz PHP un uz Jūsu tīmekļa vietni atšķiras atkarībā no pakalpojuma sniedzēja; skatiet sava paneļa rokasgrāmatu. Vai izmantojiet WP-CLI: wp cron event run --due-now. Pēc tam Vietnes veselībā pārbaudiet, vai nav ieplānotu uzdevumu, kas atpaliek.
Heartbeat un administrēšana
WordPress Panelis, kamēr tas ir atvērts, ik pēc 15 līdz 60 sekundēm sazinās ar serveri (Heartbeat): automātiskai saglabāšanai, lai paziņotu, ka kāds cits rediģē to pašu ziņu, un paziņojumiem. Ja Jūs visu dienu turat atvērtas desmit cilnes ar Paneli, tie ir tūkstošiem pieprasījumu. Aizveriet cilnes, ko neizmantojat. Dažādi kešatmiņas spraudņi var palēnināt Heartbeat; pilnībā to izslēgt nav nepieciešams, un tas izjauc automātisko saglabāšanu.
Kopsavilkums
- Pēc lapu kešatmiņas: attēli, PHP versija, ārējie elementi un spraudņi, datubāze, cron. Mēriet pirms un pēc, pa vienam solim.
- Lēnā ielāde visam, izņemot lielo attēlu augšpusē; tam labāk piešķirt
fetchpriority="high". - Jaunāka PHP versija ir bezmaksas ātrdarbība, ja vien Jūsu spraudņi to atbalsta.
- Sakārtojiet versijas, transients, surogātpastu un lielos autoload datus, vienmēr ar rezerves kopiju.
- Pārslēdziet WP-Cron uz īstu cron uzdevumu ar
DISABLE_WP_CRONun uzdevumu Jūsu panelī.
Tests
Uzdevums
Uzdevums A6.3: Lēnā ielāde (lazy loading) un formāti Jūsu sākumlapā. Ievadiet savas tīmekļa vietnes adresi. Programma nolasīs sākumlapu un apskatīs attēlus: vai pirmajam lielajam attēlam NAV loading="lazy" (un vēlams ir fetchpriority="high"), vai attēliem zemāk ir lēnā ielāde, un kāda daļa no attēliem ir WebP vai AVIF?
Uzdevums D6.3: Pirms un pēc. Izmēriet kādu savas tīmekļa vietnes lapu trīs reizes ar PageSpeed Insights (mobilajai ierīcei) un pierakstiet vidējo LCP, INP (vai laboratorijas vērtību Total Blocking Time, ja nav lauka datu), CLS un TTFB no uzdevuma A6.1. Pēc tam veiciet vienu uzlabojumu no šīs nodarbības (attēli, PHP versija, ārēja elementa noņemšana, datubāzes sakārtošana vai īsts cron). Izmēriet vēlreiz trīs reizes un pierakstiet jaunās vērtības. Aprakstiet, ko Jūs darījāt un vai atšķirība ir lielāka par parasto svārstību starp mērījumiem.
Uzdevums D6.3: Pirms un pēc
Šo uzdevumu veicat paši; neviens to nepārbauda. Atzīmējiet, ko esat izdarījuši, un atzīmējiet uzdevumu kā paveiktu.
Ievadīti seši mērījumi, veikts viens no nodarbībā minētajiem uzlabojumiem (attēli, kešatmiņa, PHP versija, mazāk spraudņu vai ārēju skriptu) un secinājums, kas min svārstības: atšķirība, kas mazāka par mērījumu izkliedi, maz ko pasaka.
Jūsu atzīmes un piezīmes paliek tikai šajā pārlūkprogrammā; mēs tās nekur nesūtām. Ja esat pieteikušies, sadaļā Mani kursi saglabājam tikai to, ka uzdevums ir paveikts.
Papildu lasāmviela
Šie raksti apraksta soļus WebOké paneļos; citos paneļos tie darbojas līdzīgi.
- DirectAdmin rokasgrāmata 14.1: PHP versijas izvēle (Select PHP version)
- DirectAdmin rokasgrāmata 12.7: Datubāzes pārbaude, labošana un optimizēšana
- DirectAdmin rokasgrāmata 15.1: Cron Jobs: uzdevumus likt izpildīties automātiski
- Cronjob vai uzdevuma izveide (un ko darīt, ja tas nedarbojas)
- DirectAdmin rokasgrāmata 17.4: X-Ray: lēnu lapu noteikšana
- WP-Cron pievienošana sistēmas cron (developer.wordpress.org, angļu valodā): https://developer.wordpress.org/plugins/cron/hooking-wp-cron-into-the-system-task-scheduler/
- Lēnā ielāde un LCP (web.dev, angļu valodā): https://web.dev/articles/lcp-lazy-loading
