Skip to main content
Web Geliştirme

Modern Web Uygulamaları İçin Performans Optimizasyonu ve PWA Rehberi

March 01, 2026 4 min read 37 views Raw
ayıklama, bilgi Teknolojisi, bilgisayar içeren Ücretsiz stok fotoğraf
Table of Contents

Günümüz kullanıcıları hızlı, akıcı ve çevrimdışı çalışabilen web deneyimleri bekliyor. Bu beklentiyi karşılamak için performans optimizasyonu ve Progressive Web App (PWA) yaklaşımları bir arada uygulanmalı. Bu rehber, ölçümden uygulamaya kadar pratik öneriler, en iyi uygulamalar ve PWA özelliklerinin nasıl doğru şekilde entegre edileceğini anlatır.

Neden performans ve PWA bir arada?

Performans, kullanıcı memnuniyeti, dönüşüm ve SEO üzerinde doğrudan etkilidir. PWA ise uygulamaya özgü avantajlar (installable, offline, push bildirimleri) sunar. Ancak kötü performanslı bir PWA, kullanıcıyı kaybeder. Bu yüzden PWA özelliklerini eklerken aynı zamanda performansı optimize etmek zorunludur.

Ölçüm: Nereden başlayacaksınız?

Başlamadan önce ölçüm yapmak şarttır. Aşağıdaki araçları kullanın:

- Lighthouse ve PageSpeed Insights: laboratuvar ölçümleri ve öneriler.
- WebPageTest: ayrıntılı yükleme analizleri, film şeridi ve ağ zamanlamaları.
- Real User Monitoring (RUM): web-vitals, Google Analytics, Sentry veya Datadog ile gerçek kullanıcı verisi.
- Performance API & PerformanceObserver: sayfa içi özel olaylar ve zamanlamalar için.

Önemli metrikler

- Largest Contentful Paint (LCP): sayfanın ana içeriğinin ne kadar hızlı boyadığı.
- Interaction to Next Paint (INP) (eski FID): etkileşim gecikmesi.
- Cumulative Layout Shift (CLS): beklenmeyen yer değiştirmeler.
- Time to First Byte (TTFB): sunucu gecikmesi.

Temel performans stratejileri

Aşağıdaki temel stratejiler modern web uygulamalarında güçlü bir temel sağlar.

1. Kritik kaynakları önceliklendirin

Critical CSS, preload/preconnect ve priorite edilmiş font yükleme ile sayfanızın ilk görünürlüğünü hızlandırın. <link rel="preload" as="style" href="/critical.css"> gibi kaynak ipuçları kullanın.

2. Kod bölme ve ağaç sarsma

Bundle boyutunu küçültmek için dynamic imports, route-based code-splitting ve tree-shaking kullanın. Vite, esbuild, Rollup veya Webpack gibi araçlar bu konuda yardımcıdır.

3. Lazy loading

Görüntüler, videolar ve ağır modüller için lazy loading uygulayın. Resimler için loading="lazy" kullanın ve resimleri gerekli boyutta sunun.

4. Görsel optimizasyon

Responsive srcset, modern formatlar (WebP, AVIF), sıkıştırma ve uygun kalite ayarlarıyla görsel ağırlığını azaltın. Ayrıca CDN üzerinde resim işleme (on-the-fly) kullanmak yükü hafifletir.

5. Ağ ve sunucu optimizasyonu

HTTP/2 veya HTTP/3, TLS, CDN kullanımı, Brotli/Gzip sıkıştırma, kısa TTFB ve önbellekleme başlıkları (Cache-Control, ETag, immutable) ile ağ gecikmelerini azaltın.

6. JavaScript optimizasyonu

Kullanılmayan JS'yi kaldırın, polyfill'leri hedeflenen tarayıcılara sınırlandırın ve uzun görevleri Web Worker'lara taşıyın. Ana thread'i meşgul eden işlemler INP'yi kötü etkiler.

7. Critical Rendering Path

Render-blocking kaynakları minimize edin. CSS kritik parçalarını inline etmek veya kritik CSS çıkarma stratejileri ile ilk boyamayı hızlandırın.

PWA: Temel bileşenler ve uygulama rehberi

PWA oluştururken temel bileşenler manifest.json, service worker ve HTTPS gereksinimidir. Aşağıda adım adım uygulama rehberi bulunmaktadır.

1. Web App Manifest

manifest.json ile uygulamanızın adı, ikonları, start_url, display (standalone/ minimal-ui), background_color ve theme_color gibi özellikleri tanımlayın. Örnek:

{
  "name": "My App",
  "short_name": "App",
  "start_url": "/?source=pwa",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#0a84ff",
  "icons": [{ "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" }]
}

2. Service Worker

Service worker ile önbelleğe alma stratejileri, offline destek, push ve background sync uygulanır. Common stratejiler:

- Cache-first: statik dosyalar için.
- Network-first: API çağrıları için (offline fallback ile).
- Stale-while-revalidate: hem hızlı yanıt hem güncel veri sağlar.

Workbox kullanarak boilerplate kodu azaltabilirsiniz:

workbox.routing.registerRoute(
  new RegExp('https://api.example.com/'),
  new workbox.strategies.NetworkFirst()
);

3. Offline UX ve App Shell

Uygulama çekirdeğini (app shell) cache'leyerek çevrimdışı başlangıç sağlayın. Kullanıcı offline durumunda uygun fallback sayfası veya mesajı gösterin.

4. Güncelleme yönetimi

Service worker sürüm yönetimi ve kullanıcı bilgilendirmesi kritik. Yeni SW aktivasyonu sonrası kullanıcıya yenileme bildirimi gösterin veya otomatik olarak yüklemeyi zorlayın.

5. Güvenlik

PWA'lar HTTPS gerektirir. Content Security Policy (CSP) ve secure headers ile uygulamanın güvenliğini sağlayın.

6. Platform farklılıkları

iOS ve Android farklılıklarını unutmayın: Safari'de service worker sınırlamaları, iOS için Apple-touch-icon ve meta etiketleri eklemek gerekir.

Performans + PWA Checklist

- Lighthouse skorlarını izleyin (Performans, PWA, Accessibility, Best Practices).
- Web Vitals - hedef değerler: LCP <= 2.5s, INP düşük, CLS <= 0.1.
- Manifest ve ikon setleri hazır.
- Service worker ile uygun caching stratejileri uygulanmış.
- Resimler responsive ve modern formatlarda.
- JS bundle'ları küçültülmüş ve kritik kod önceliklendirilmiş.
- HTTPS, HSTS ve güvenli header'lar aktif.
- RUM ile gerçek kullanıcı verisi toplanıyor.
- Offline fallback ve app shell mevcut.

Test ve dağıtım

Test ortamında Lighthouse, WebPageTest ve gerçek cihazlarda manuel test yapın. CI/CD pipeline'ına Lighthouse raporlamasını, bundle analizini ve otomatik SW sürümlemeyi ekleyin. Edge/CDN üzerine dağıtım hızınız ve ölçeklenebilirliğiniz için önemlidir.

Sonuç

Modern web uygulamalarında performans ve PWA birbirini tamamlar. Ölçüm odaklı bir yaklaşım, doğru önceliklendirme ve uygun araçlarla hem hızlı hem de zengin çevrimdışı deneyimler sunabilirsiniz. Küçük optimizasyonlar (kritik CSS, lazy loading, preconnect) anında fark yaratırken, iyi yapılandırılmış service worker ve manifest uygulamanızı bir mobil uygulama gibi hissettirir. Sen Ekolsoft olarak projelerinizde bu rehberi uygulamanıza yardımcı olabiliriz.

Share this post