Miks jõudlus on oluline
Veebilehe jõudlus mõjutab otseselt kasutajakogemust, konversioonimäärasid ja SEO järjestust. Uuringud näitavad:
- 53% mobiilsetest kasutajatest lahkub saitidelt, mis laadivad üle 3 sekundi
- Iga 100ms viivitus laadimisel võib vähendada konversioone 1% võrra
- Google kasutab lehe kiirust järjestustegurina
Vaatame praktilisi tehnikaid veebilehe kiiremaks muutmiseks.
1. Optimeeri pildid
Pildid moodustavad tavaliselt 50-70% veebilehe kogumahust.
Kasuta kaasaegseid formaate
<!-- Kasuta WebP koos tagavaravariantiga -->
<picture>
<source srcset="image.webp" type="image/webp" />
<img src="image.jpg" alt="Kirjeldus" />
</picture>
Laadi pilte viivitusega
// Natiivne viivitusega laadimine
<img src="image.jpg" loading="lazy" alt="Kirjeldus" />
Põhipraktikad:
- Tihenda pilte (TinyPNG, ImageOptim)
- Kasuta sobivaid mõõtmeid (ära laadi 4000px pilte 400px ekraanidele)
- Rakenda responsiivset pildilaadimist
srcset-ga
2. Minimeeri ja kombineeri JavaScript
Vähenda JavaScripti suurust:
// Enne: Mitu importi
import _ from 'lodash'
const result = _.debounce(fn, 300)
// Pärast: Impordi ainult vajalik
import debounce from 'lodash/debounce'
const result = debounce(fn, 300)
Koodi poolitamine
Jaga kood väiksemateks tükkideks:
// Dünaamilised impordid
const HeavyComponent = () => import('./HeavyComponent.vue')
// Laadi ainult vajaduse korral
if (userWantsFeature) {
const module = await import('./feature.js')
module.init()
}
3. Rakenda vahemälustamise strateegiaid
Brauseri vahemälustamine
# Nginx konfiguratsioon
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
Service Workers
Vahemälusta ressursse offline-kasutuseks:
// service-worker.js
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open('v1').then((cache) => {
return cache.addAll([
'/',
'/styles/main.css',
'/scripts/main.js'
])
})
)
})
4. Optimeeri CSS-i kohaletoimetamist
Kriitiline CSS
Lisa kriitiline CSS otse HTML-i:
<head>
<style>
/* Kriitiline CSS inline */
.hero { background: #000; height: 100vh; }
</style>
<link rel="preload" href="/styles/main.css" as="style" onload="this.rel='stylesheet'" />
</head>
Eemalda kasutamata CSS
Kasuta tööriistu nagu PurgeCSS surnud koodi eemaldamiseks:
// Tailwind CSS konfiguratsioon
module.exports = {
purge: ['./src/**/*.{js,jsx,ts,tsx,vue}'],
// ...
}
5. Kasuta sisujaotuse võrke (CDN)
CDN-id pakuvad sisu kasutajatele lähimatest serveritest:
- Cloudflare: Saadaval tasuta versioon
- AWS CloudFront: Integreeritav AWS teenustega
- Vercel/Netlify: Automaatne CDN staatilistele saitidele
Eelised:
- Vähendatud latentsus
- Parem globaalne jõudlus
- DDoS kaitse
- Automaatne optimeerimine
6. Optimeeri fonte
Veebifondid võivad oluliselt mõjutada laadimisaega:
/* Eellae kriitilised fondid */
<link rel="preload" href="/fonts/main.woff2" as="font" type="font/woff2" crossorigin>
/* Kasuta font-display paremat UX-i jaoks */
@font-face {
font-family: 'CustomFont';
src: url('/fonts/custom.woff2') format('woff2');
font-display: swap; /* Näita tagavarafonti kohe */
}
Parimad praktikad:
- Kasuta süsteemifondi kui võimalik
- Piira fontide raskusi ja variante
- Kasuta WOFF2 formaati
- Hosti fonte ise väliste päringute vältimiseks
7. Andmebaasi päringute optimeerimine
Aeglased andmebaasi päringud tapavad jõudluse:
-- Enne: Terve tabeli skanneerimine
SELECT * FROM users WHERE email LIKE '%@example.com';
-- Pärast: Indekseeritud päring
CREATE INDEX idx_users_email ON users(email);
SELECT id, name, email FROM users WHERE email = '[email protected]';
Näpunäited:
- Lisa indeksid sagedasti päringutavatel veergudel
- Kasuta
SELECTkonkreetseid veerge, mitte* - Rakenda andmebaasi ühenduste koondamist
- Vahemälusta sagedasi päringuid (Redis, Memcached)
8. Luba tihendamine
Tihenda tekstipõhiseid ressursse:
# Luba Gzip tihendamine
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1000;
Kaasaegne alternatiiv: Brotli tihendamine pakub 15-25% paremat tihendamist kui Gzip.
9. Jälgi ja mõõda
Sa ei saa parandada seda, mida ei mõõda:
Tööriistad:
- Google PageSpeed Insights: Üldine jõudluse skoor
- Lighthouse: Detailsed auditid
- WebPageTest: Reaalsed testid
- Chrome DevTools: Võrgu ja jõudluse profiilimine
Põhimõõdikud:
- LCP (Largest Contentful Paint): < 2.5s
- FID (First Input Delay): < 100ms
- CLS (Cumulative Layout Shift): < 0.1
10. Serveri-poolne optimeerimine
Kasuta HTTP/2 või HTTP/3
listen 443 ssl http2;
Eelised: multipleksimine, päise tihendamine, serveri push
Rakenda serveri-poolset vahemälustamist
// Node.js näide Redisega
const redis = require('redis')
const client = redis.createClient()
app.get('/api/data', async (req, res) => {
const cached = await client.get('data')
if (cached) {
return res.json(JSON.parse(cached))
}
const data = await fetchFromDatabase()
await client.setex('data', 3600, JSON.stringify(data))
res.json(data)
})
Reaalne mõju
Pärast nende tehnikate rakendamist kliendi e-kaubanduse saidil:
- Laadimisaeg: Vähenes 4.2 sekundilt 1.3 sekundile
- Põrkemäär: Vähenes 35% võrra
- Konversioonimäär: Kasvas 22% võrra
- Google järjestus: Paranes lehelt 3 lehele 1
Järeldus
Veebilehe jõudluse optimeerimine on pidev protsess. Alusta suurimatest võitudest (pildid, vahemälustamine, koodi poolitamine), mõõda mõju ja itereeri. Iga millisekund loeb kasutajakogemuse ja ärinäitajate osas.
