// Service Worker Registration for caching if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/sw.js') .then(function(registration) { console.log('ServiceWorker registration successful'); }) .catch(function(err) { console.log('ServiceWorker registration failed'); }); }); } // Image optimization and lazy loading function optimizeImages() { const images = document.querySelectorAll('img[loading="lazy"]'); // WebP support detection const webpSupported = checkWebPSupport(); if ('IntersectionObserver' in window) { const imageObserver = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { const img = entry.target; const picture = img.closest('picture'); // Load appropriate image format if (picture && webpSupported) { const webpSource = picture.querySelector('source[type="image/webp"]'); if (webpSource) { img.src = webpSource.srcset; } } // Remove skeleton and show image img.classList.remove('skeleton'); img.classList.add('loaded'); // Preload next images preloadNextImages(img); imageObserver.unobserve(img); } }); }, { rootMargin: '50px 0px', threshold: 0.1 }); images.forEach(img => { if (!img.complete) { img.classList.add('skeleton'); } imageObserver.observe(img); }); } // Optimize critical images optimizeCriticalImages(); } // Check WebP support function checkWebPSupport() { return new Promise((resolve) => { const webP = new Image(); webP.onload = webP.onerror = function () { resolve(webP.height === 2); }; webP.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA'; }); } // Preload next images for better UX function preloadNextImages(currentImg) { const nextImages = currentImg.parentElement.parentElement.nextElementSibling; if (nextImages) { const nextImg = nextImages.querySelector('img[loading="lazy"]'); if (nextImg && !nextImg.src) { const link = document.createElement('link'); link.rel = 'preload'; link.as = 'image'; link.href = nextImg.dataset.src || nextImg.src; document.head.appendChild(link); } } } // Optimize critical images function optimizeCriticalImages() { const criticalImages = document.querySelectorAll('img[fetchpriority="high"]'); criticalImages.forEach(img => { if (img.complete) { img.classList.add('loaded'); } else { img.addEventListener('load', () => { img.classList.add('loaded'); }); } }); } // Preload critical images function preloadImage(src) { const img = new Image(); img.src = src; } // Preload critical resources if ('requestIdleCallback' in window) { requestIdleCallback(() => { // Preload non-critical resources when browser is idle const link = document.createElement('link'); link.rel = 'prefetch'; link.href = 'https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js'; document.head.appendChild(link); // Preload jQuery const jqueryLink = document.createElement('link'); jqueryLink.rel = 'prefetch'; jqueryLink.href = 'https://code.jquery.com/jquery-3.6.0.min.js'; document.head.appendChild(jqueryLink); }); } // Performance monitoring function logPerformanceMetrics() { if ('performance' in window) { const navigation = performance.getEntriesByType('navigation')[0]; if (navigation) { console.log('Page Load Time:', Math.round(navigation.loadEventEnd - navigation.loadEventStart), 'ms'); console.log('DOM Content Loaded:', Math.round(navigation.domContentLoadedEventEnd - navigation.domContentLoadedEventStart), 'ms'); } } } // Initialize optimizations when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', optimizeImages); } else { optimizeImages(); } // Log performance metrics on load window.addEventListener('load', logPerformanceMetrics); // Advanced image optimization function advancedImageOptimization() { // Monitor image loading performance const imageLoadTimes = new Map(); document.addEventListener('load', function(e) { if (e.target.tagName === 'IMG') { const img = e.target; const loadTime = performance.now() - performance.timing.navigationStart; imageLoadTimes.set(img.src, loadTime); // Log slow loading images if (loadTime > 3000) { console.warn('Slow image load:', img.src, 'Time:', Math.round(loadTime), 'ms'); } } }, true); // Preload critical images preloadCriticalImages(); // Optimize image formats based on browser support optimizeImageFormats(); } // Preload critical images function preloadCriticalImages() { const criticalImages = [ '/assets/images/logo/logo-main.png', '/assets/images/logo/logo-sub.png' ]; criticalImages.forEach(src => { const link = document.createElement('link'); link.rel = 'preload'; link.as = 'image'; link.href = src; link.fetchPriority = 'high'; document.head.appendChild(link); }); } // Optimize image formats function optimizeImageFormats() { // Check for AVIF support const avifSupported = checkAVIFSupport(); if (avifSupported) { // Add AVIF sources for supported browsers addAVIFSources(); } } // Check AVIF support function checkAVIFSupport() { return new Promise((resolve) => { const avif = new Image(); avif.onload = avif.onerror = function () { resolve(avif.height === 1); }; avif.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdmlmCgAAAAgCAAAAE2F1ZGEAAAAA'; }); } // Add AVIF sources function addAVIFSources() { const images = document.querySelectorAll('img[src*=".jpg"], img[src*=".png"]'); images.forEach(img => { const picture = img.closest('picture'); if (picture && !picture.querySelector('source[type="image/avif"]')) { const avifSource = document.createElement('source'); avifSource.type = 'image/avif'; avifSource.srcset = img.src.replace(/\.(jpg|png)$/, '.avif'); picture.insertBefore(avifSource, picture.firstChild); } }); } // Log performance metrics on load window.addEventListener('load', function() { logPerformanceMetrics(); advancedImageOptimization(); // Log image performance summary const totalImages = document.querySelectorAll('img').length; const loadedImages = Array.from(document.querySelectorAll('img')).filter(img => img.complete).length; console.log(`Image Performance: ${loadedImages}/${totalImages} images loaded`); });

Firma Rehberi - Find Türkiye

Elazığ İnternet Pazarlamacılığı Hizmeti

Hakkımızda

Bioyla: Yerel işletmeleri keşfedin ve favori mekanlarınız hakkında bilgi alın. Restoranlar, kafeler, alışveriş merkezleri ve daha fazlası için kapsamlı rehberimizle ideal seçimlerinizi yapın. Güncel bilgiler, kullanıcı yorumları ve özel fırsatlar sizi bekliyor

Müşteri Yorumları

4.0 /5

23

Toplam Yorum
Reviewer Avatar
ًAbdulla Hassan Alabdouli

""

Reviewer Avatar
Osman Kıbrıs

"find mış isimleri kendilerini adam akıllı bulamıyorlar daha bu ne yaw"

Reviewer Avatar
Moted Derneği

"Başarılı tebrik ederiz."

Reviewer Avatar
İbrahim Altıparmak

""

Reviewer Avatar
Aşkın Tunca

""

Reviewer Avatar
MUSTAFA MUTLU Ibili

""

Reviewer Avatar
yücel soylu

"sakın bulaşmayın merdiven altı bir şirket benim mahkemece kesinleşmiş alacağım var. alamadım hala."

Reviewer Avatar
twok 31

"Gerçek acenta'yı bul ✌🏿 …"

Reviewer Avatar
Mehmet Ali Kirca

""

Reviewer Avatar
Bdogan

""