HTML'den Service Worker Kaydı
Bir betik etiketi ve navigator API ile service worker kaydedin
HTML'den Service Worker Kaydı, CoddyKit'te ücretsiz bir HTML Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, HTML Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. HTML Academy kursu toplamda 4 dersten oluşur.
Hizmet Çalışanı Nedir
Hizmet çalışanı, herhangi bir sayfadan ayrı olarak arka planda çalışan ve kendi kapsamındaki ağ isteklerini araya girerek yöneten bir JavaScript dosyasıdır. Önbelleğe alma yoluyla çevrimdışı desteği, anlık bildirimleri, arka plan eşitlemesini ve daha hızlı tekrar yüklemelerini sağlar.
Kayıt
Çalışanı bir sayfa betiğinden kaydedin: navigator.serviceWorker.register("/sw.js"). Tarayıcı /sw.js dosyasını getirir, ayrıştırır, yükleme olayını çalıştırır ve kaydın kapsamındaki istekleri araya girerek yönetmeye başlar.
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
.then((reg) => console.log("Registered, scope:", reg.scope))
.catch((err) => console.error("Registration failed:", err));
}Önce Özellik Algılama
Eski tarayıcılar hizmet çalışanlarını desteklemez. register çağrısından önce her zaman "serviceWorker" in navigator ile özellik algılaması yapın; aksi takdirde API'yi desteklemeyen tarayıcılarda çağrı hata verir. Polyfill kullanmak uygulanabilir değildir; hizmet çalışanları tarayıcı düzeyinde tümleşme gerektirdiğinden polyfill ile sağlanamaz.
Kapsam
Kapsam, çalışanın denetlediği yol ön ekidir. Varsayılan olarak kapsam, çalışan dosyasının bulunduğu dizindir: /sw.js, / altındaki tüm URL'leri denetler. Farklı bir dosya konumundan daha derin kapsamlı bir çalışan kaydetmek için kapsam seçeneğini ayarlayın ve Service-Worker-Allowed üstbilgisini sunun.
sw.js Nereye Yerleştirilmeli
Varsayılan kapsamının tüm siteyi kapsaması için sw.js dosyasını uygulamanın köküne (/sw.js) yerleştirin. Daha derin yollar (/app/sw.js), kapsamı /app/ ve altıyla sınırlar; genellikle istediğiniz şey bu değildir.
Kayıt Zamanlaması
Kritik oluşturma sırasında bant genişliği için rekabeti önlemek üzere çalışanı sayfa yüklendikten sonra kaydedin: window.addEventListener("load", () => navigator.serviceWorker.register("/sw.js")). PWA özellikleri ilk ziyareti geciktirmeden sonraki ziyaretlerde devreye girer.
Güncellemeler
Tarayıcı güncellenmiş bir sw.js dosyasını otomatik olarak kontrol eder (genellikle 24 saatte bir ve çoğu sayfa yüklemesinde). Dosya içeriği değiştiyse yeni çalışan indirilir, yüklenir ve mevcut tüm sekmeler kapanana kadar "bekliyor" durumunda bekler; ardından etkinleşir.
Güncellemeleri Zorlama
registration.update() elle bir güncelleme denetimi başlatır. Yeni sw.js içindeki self.skipWaiting(), sekmelerin kapanmasını beklemeden hemen etkinleşir. "Her zaman en yeni çalışanı çalıştır" davranışı için ikisini birleştirin; bunun karşılığında oturum ortasında yeniden getirme yapılabilir.
Kaydı Kaldırma
registration.unregister() çalışanı kaldırır. Hatalı bir çalışan sitenizi bozuyorsa geliştirme sırasında kullanışlıdır. Chrome DevTools'ta Application → Service Workers bölümü, hata ayıklama sırasında aynı amaçla kullanılabilecek bir "Kaydı kaldır" düğmesi sunar.
Yaygın Hata
Bir çalışanı HTTP üzerinden (HTTPS olmadan) kaydetmek sessizce başarısız olur; hizmet çalışanları güvenli bir kaynak gerektirir (HTTPS veya geliştirme için localhost). Kayıt etkili olmuyorsa konsolda "Bir SSL sertifikası hatası oluştu" iletisini kontrol edin.
Çalışan ile Sayfayı Eşgüdümleme
Çalışanın DOM erişimi yoktur. İletileri aktarmak için sayfada navigator.serviceWorker.controller.postMessage(), çalışanda ise self.addEventListener("message", handler) kullanın (ve tersini de yapın). Bu yaklaşım önbellek geçersizleştirme, sürüm denetimleri ve özel olaylar için kullanışlıdır.
İlk Ziyaret ve Tekrar Ziyaret
İlk ziyarette çalışan yüklenir ve sayfaları ancak sayfa yeniden yüklendikten sonra denetlemeye başlar. İlk gezinmeyi hemen denetlemek için etkinleştirme olayında self.clients.claim() çağrısını yapın; bu, çevrimdışı öncelikli uygulamalar için kullanışlıdır.
Bilgi Kontrolü
Hizmet çalışanları neden HTTPS (veya localhost) üzerinden sunulmalıdır?
Özet
Hizmet çalışanlarını özellik algılamasından sonra, sayfa JS'sinden navigator.serviceWorker.register("/sw.js") ile kaydedin. Tam kapsam için sw.js dosyasını uygulamanın köküne yerleştirin. Kritik oluşturmayla rekabet etmemesi için yükleme sırasında kaydedin. Güncellemeler düzenli aralıklarla otomatik olarak denetlenir; registration.update veya skipWaiting ile zorlayabilirsiniz. Kötü amaçlı çalışan eklenmesini önlemek için HTTPS gereklidir.
Sıkça Sorulan Sorular
“HTML'den Service Worker Kaydı” dersi ücretsiz mi?
Evet — “HTML'den Service Worker Kaydı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve HTML Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. HTML Academy kursu toplamda 4 dersten oluşur.
“HTML'den Service Worker Kaydı” dersinde ne öğreneceğim?
Bir betik etiketi ve navigator API ile service worker kaydedin HTML Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
HTML Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te HTML Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“HTML'den Service Worker Kaydı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu HTML Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her HTML Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Web Uygulaması Bildirimi
- HTML'den Service Worker Kaydı
- Tema Rengi ve Uygulama Simgeleri
- Çevrim Dışı Yedek Sayfa