Heim > Artikel > Web-Frontend > Laden Sie Bilder schneller in Laravel und JavaScript
In der Welt der Webentwicklung kann die Geschwindigkeit, mit der Bilder auf Ihrer Website geladen werden, über das Benutzererlebnis entscheiden. Langsam geladene Bilder können zu höheren Absprungraten, geringerem Engagement und letztendlich zu negativen Auswirkungen auf die Suchmaschinenoptimierung führen. Wenn Sie Laravel und JavaScript verwenden, können Sie mehrere Strategien implementieren, um das Laden von Bildern zu optimieren und sicherzustellen, dass Ihre Webanwendung die beste Leistung erbringt. In diesem Blogbeitrag untersuchen wir verschiedene Techniken, um Bilder mithilfe von Laravel und JavaScript schneller zu laden.
Bevor Sie sich mit Optimierungen auf Codeebene befassen, müssen Sie unbedingt mit den Bildern selbst beginnen. Große Bilddateien sind einer der häufigsten Gründe für langsame Seitenladevorgänge. Hier sind einige Tipps zum Optimieren von Bildern vor dem Hochladen:
Laravel verfügt über leistungsstarke Tools, mit denen Sie Bilder effizient verwalten und optimieren können. Hierfür eignet sich besonders das Paket „Intervention Image“.
use Intervention\Image\Facades\Image; use Illuminate\Support\Facades\Cache; public function show($id) { $image = Cache::remember("image_$id", 60, function() use ($id) { return Image::make(storage_path("app/public/images/$id.jpg"))->resize(800, 600)->encode('jpg'); }); return response($image)->header('Content-Type', 'image/jpeg'); }
$image = Image::make('public/foo.jpg')->resize(300, 200); return $image->response('jpg');
Lazy Loading verzögert das Laden von Bildern, bis sie kurz vor dem Eintritt in das Ansichtsfenster stehen, was die anfängliche Ladezeit einer Seite drastisch verkürzen kann.
<img src="image.jpg" loading="lazy" alt="Lazy Loaded Image">
document.addEventListener("DOMContentLoaded", function() { let lazyImages = [].slice.call(document.querySelectorAll("img.lazy")); let active = false; const lazyLoad = function() { if (active === false) { active = true; setTimeout(function() { lazyImages.forEach(function(lazyImage) { if ((lazyImage.getBoundingClientRect().top <= window.innerHeight && lazyImage.getBoundingClientRect().bottom >= 0) && getComputedStyle(lazyImage).display !== "none") { lazyImage.src = lazyImage.dataset.src; lazyImage.classList.remove("lazy"); lazyImages = lazyImages.filter(function(image) { return image !== lazyImage; }); if (lazyImages.length === 0) { document.removeEventListener("scroll", lazyLoad); window.removeEventListener("resize", lazyLoad); window.removeEventListener("orientationchange", lazyLoad); } } }); active = false; }, 200); } }; document.addEventListener("scroll", lazyLoad); window.addEventListener("resize", lazyLoad); window.addEventListener("orientationchange", lazyLoad); });
CDNs verteilen Ihre Bilder auf mehrere Server weltweit, sodass Benutzer sie von einem Server herunterladen können, der ihrem Standort am nächsten liegt. Dies reduziert die Latenz und beschleunigt das Laden von Bildern.
Storage::disk('s3')->put('path/to/image.jpg', $imageContent); $cdnUrl = Storage::disk('s3')->url('path/to/image.jpg');
WebP ist ein modernes Bildformat, das eine hervorragende verlustfreie und verlustbehaftete Komprimierung für Bilder im Web bietet. Durch die Bereitstellung von Bildern im WebP-Format können Sie die Dateigröße ohne Einbußen bei der Qualität erheblich reduzieren.
use Spatie\Image\Image; use Spatie\Image\Manipulations; Image::load('image.jpg') ->format(Manipulations::FORMAT_WEBP) ->save('image.webp');
<picture> <source srcset="image.webp" type="image/webp"> <img src="image.jpg" alt="Fallback Image"> </picture>
Durch das Zurückstellen von Bildern außerhalb des Bildschirms stellen Sie sicher, dass nur Bilder, die sofort sichtbar sind, zuerst geladen werden, während die anderen später geladen werden.
document.addEventListener('DOMContentLoaded', function() { let lazyImages = [].slice.call(document.querySelectorAll("img.lazy")); function isInViewport(el) { const rect = el.getBoundingClientRect(); return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); } function deferImageLoading() { lazyImages.forEach(image => { if (isInViewport(image)) { image.src = image.dataset.src; image.classList.remove('lazy'); } }); } window.addEventListener('scroll', deferImageLoading); window.addEventListener('resize', deferImageLoading); window.addEventListener('load', deferImageLoading); });
Das Optimieren des Ladens von Bildern in Ihren Laravel- und JavaScript-Projekten ist entscheidend für die Bereitstellung einer schnellen und reaktionsfähigen Benutzererfahrung. Durch die Komprimierung von Bildern, die Nutzung von Lazy Loading, die Verwendung von CDNs, die Implementierung von WebP-Formaten und die Optimierung Ihrer CSS- und JS-Dateien können Sie die Ladezeiten von Bildern auf Ihrer Website erheblich verbessern. Denken Sie daran, dass das Ziel darin besteht, Bildqualität und Leistung in Einklang zu bringen, um Ihren Benutzern ein nahtloses Erlebnis zu bieten.
Beginnen Sie noch heute mit der Umsetzung dieser Strategien und sehen Sie den Unterschied in der Leistung Ihrer Website!
Viel Spaß!
Das obige ist der detaillierte Inhalt vonLaden Sie Bilder schneller in Laravel und JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!