Skip to content

Instantly share code, notes, and snippets.

View ahmetilhn's full-sized avatar
:electron:
Continue coding open source packages for the community

Ahmet İlhan ahmetilhn

:electron:
Continue coding open source packages for the community
View GitHub Profile
@ahmetilhn
ahmetilhn / sw-network-only.js
Created May 2, 2024 20:33
Service worker network only cache strategy
self.addEventListener('fetch', event => {
event.respondWith(
fetch(event.request)
);
});
@ahmetilhn
ahmetilhn / sw-cache-only.js
Created May 2, 2024 20:31
Service worker cache only strategy
self.addEventListener('fetch', event => {
// sadece cache'teki veriyi geri dönder
event.respondWith(
caches.match(event.request)
);
});
@ahmetilhn
ahmetilhn / sw-stale-revalidate.js
Created May 2, 2024 20:28
Service worker stale revalidate cache strategy
self.addEventListener('fetch', async event => {
const cache = await caches.open('v1');
// Önce önbellekteki yanıtı al, aynı zamanda ağdan yenile
const cachedResponse = await caches.match(event.request);
const fetchRes = await fetch(event.request)
// Ağdan alınan yanıtı önbelleğe kaydet
cache.put(event.request, fetchRes.clone());
// Önbellekteki yanıtı kullan veya ağdan alınanı bekle
return event.respondWith(cachedResponse || fetchRes);
});
@ahmetilhn
ahmetilhn / sw-network-first.js
Created May 2, 2024 20:22
Service worker network first strategy
self.addEventListener('fetch', async event => {
try {
// İlk olarak ağdan istek yap
const fetchResponse = await fetch(event.request);
const cache = await caches.open('v1');
// Ağdan alınan yanıtı önbelleğe kaydet
cache.put(event.request, fetchResponse.clone());
return event.respondWith(fetchResponse);
} catch (error) {
// Ağ hatası durumunda önbellekten dön
@ahmetilhn
ahmetilhn / sw-cache-first.js
Created May 2, 2024 20:19
Service worker cache first strategy
self.addEventListener('fetch', async event => {
// İlk olarak önbellekte eşleşen bir yanıt arayın
const cachedResponse = await caches.match(event.request);
if (cachedResponse) {
// Önbellekte eşleşen bir yanıt varsa, onu dön
return event.respondWith(cachedResponse);
}
// Eğer önbellekte yoksa, ağdan istek yap
const fetchResponse = await fetch(event.request);
const cache = await caches.open('v1');
@ahmetilhn
ahmetilhn / sw-cache.js
Last active May 2, 2024 20:03
Service worker caching example
async function cacheThenNetwork(request) {
// cache'leme mekanizmasından cache'lenen tüm veriler
const cachedResponse = await caches.match(request);
if (cachedResponse) {
// cache datayı geri dönder
return cachedResponse;
}
// yoksa istek atmaya izin ver
return fetch(request);
}
@ahmetilhn
ahmetilhn / sw-registration.js
Last active May 2, 2024 21:58
Service worker registration
const registerServiceWorker = async () => {
// Service worker destekleniyor mu diye kontrol ediyoruz
if ("serviceWorker" in navigator) {
try {
// Tarayıcıya kendi service worker dosyamızı kaydetmek için talepte bulunuyoruz
// sw.js herhangi bir dizinde bulunabilir. CDN'de de olabilir
const registration = await navigator.serviceWorker.register("./sw.js");
if (registration.installing) {
// service worker kaydediliyor
} else if (registration.active) {
@ahmetilhn
ahmetilhn / sw-fetch-listener.js
Last active May 2, 2024 18:55
Service worker fetch listener (by ahmetilhn)
// self = context | window | provider
self.addEventListener('fetch', function(event) {
// İstek gitmeden önce yakalanır ve iptal edilir
event.respondWith(
fetch(event.request).then(response => {
// Burada response nesnesini özelleştirebilir veya değiştirebilirsiniz
return response;
}).catch(error => {
// Ağ hatası durumunda önbellekten bir kaynak döndürmek
return caches.match('/offline.html');