Middle+
Veb saytın performansını necə optimallaşdırırsınız?
sobes.tech Süni İntellekt
AI-dan cavab
- Şəkil optimallaşdırması:
- Müasir formatlardan, məsələn, WebP-dən istifadə.
- Keyfiyyət itkisi olmadan şəkil sıxışdırması.
- Görünən sahədən kənar şəkillər üçün lazy loading.
<picture>və yasrcsetistifadə edərək adaptiv şəkillər.
- Resursların minimallaşdırılması və sıxışdırılması:
- HTML, CSS və JavaScript-in minimallaşdırılması.
- Mətn resursları üçün Gzip və ya Brotli sıxışdırması.
- Keşləmə:
- Brauzer keşləməsi HTTP başlıqları (
Cache-Control,Expires) ilə. - Server tərəfində keşləmə.
- Offline giriş və daha mürəkkəb keşləmə üçün Service Workers istifadəsi.
- Brauzer keşləməsi HTTP başlıqları (
- Kritik render yolunun optimallaşdırılması:
- Kritik olmayan CSS və JavaScript-in gecikdirilməsi.
async,deferilə asinxron skript yüklənməsi.- Kritik CSS-in inline olması.
- HTTP sorğularının sayını azaltmaq:
- CSS və JavaScript fayllarının birləşdirilməsi (HTTP/2-də ehtiyatla).
- Kiçik ikonlar üçün sprite-lərdən istifadə.
- Kiçik resursların (məsələn, fontlar və ya SVG-lər) CSS-ə data URIs ilə daxil edilməsi.
- Fontların optimallaşdırılması:
- Müasir font formatlarından istifadə (WOFF2).
- Fontların lokal yerləşdirilməsi.
- Fontların əvvəlcədən yüklənməsi (
preload). font-displayistifadə edərək fontların yüklənmə zamanı necə göstəriləcəyini idarə etmək.
- JavaScript performansı:
- Algoritmlərin və məlumat strukturlarının optimallaşdırılması.
- DOM əməliyyatlarının azaldılması.
- Hadisə delegasiyasından istifadə.
- Kodun bölünməsi (code splitting).
- Render və çəkilmənin optimallaşdırılması:
- Bahalı CSS xüsusiyyətlərindən qaçınmaq.
will-changeistifadə.- Animasiya və keçidlərin optimallaşdırılması.
- CDN (Content Delivery Network) istifadəsi.
- Server tərəfi optimallaşdırması:
- Sürətli server cavabları.
- Verilənlər bazası sorğularının optimallaşdırılması.
// Lazy loading üçün nümunə
const images = document.querySelectorAll('img[data-src]');
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
delete img.dataset.src;
observer.unobserve(img);
}
});
});
images.forEach(image => {
observer.observe(image);
});
<!-- async və defer istifadə nümunəsi -->
<script src="script1.js" async></script>
<script src="script2.js" defer></script>
/* font-display istifadə nümunəsi */
@font-face {
font-family: 'MyFont';
src: url('myfont.woff2') format('woff2');
font-display: swap; /* Brauzerin əsas font yüklənənə qədər ehtiyat font istifadə etməsinə imkan verir */
}