Heim  >  Artikel  >  Web-Frontend  >  Laden Sie Bilder schneller in Laravel und JavaScript

Laden Sie Bilder schneller in Laravel und JavaScript

王林
王林Original
2024-09-04 07:01:36722Durchsuche

Load Images Faster in Laravel and 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.

1. Optimieren Sie Bilddateien vor dem Hochladen

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:

  • Bilder komprimieren: Verwenden Sie Tools wie TinyPNG, JPEG-Optimizer oder ImageOptim, um Ihre Bilder ohne Qualitätsverlust zu komprimieren.
  • Wählen Sie das richtige Format: Verwenden Sie JPEG für Fotos und PNG für Bilder mit Transparenz. SVG eignet sich hervorragend für Symbole und einfache Grafiken.
  • Größe von Bildern ändern: Stellen Sie sicher, dass die Bilder nicht größer sind als nötig. Die Bereitstellung eines 2000 Pixel breiten Bilds, wenn nur 500 Pixel benötigt werden, verschwendet Bandbreite.

2. Nutzen Sie Laravels Bild-Caching und -Manipulation

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“.

  • Bild-Caching: Sie können Bilder serverseitig zwischenspeichern, um die Ladezeit für nachfolgende Anfragen zu verkürzen. Dies ist besonders nützlich für Bilder, die im laufenden Betrieb erstellt oder in der Größe geändert werden.
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');
}
  • Bildbearbeitung im Handumdrehen: Mit Intervention Image können Sie die Größe von Bildern ändern, sie zuschneiden und dynamisch Filter auf Bilder anwenden, wodurch die Notwendigkeit reduziert wird, mehrere Versionen desselben Bildes zu speichern.
$image = Image::make('public/foo.jpg')->resize(300, 200);
return $image->response('jpg');

3. Nutzen Sie Lazy Loading in JavaScript

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.

  • Native Lazy Loading: HTML5 unterstützt jetzt Lazy Loading nativ mit dem Loading-Attribut.
<img src="image.jpg" loading="lazy" alt="Lazy Loaded Image">
  • JavaScript-Bibliotheken: Wenn Sie mehr Kontrolle benötigen, sollten Sie die Verwendung einer JavaScript-Bibliothek wie lazysizes in Betracht ziehen.
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);
});

4. Nutzen Sie Content Delivery Networks (CDNs)

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.

  • CDN-Integration in Laravel: Laravel erleichtert die Integration mit CDNs. Sie können Ihre Bilder in Cloud-Speichern wie AWS S3 oder DigitalOcean Spaces speichern und über ein CDN bereitstellen.
Storage::disk('s3')->put('path/to/image.jpg', $imageContent);

$cdnUrl = Storage::disk('s3')->url('path/to/image.jpg');

5. Implementieren Sie WebP-Bilder

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.

  • Automatische WebP-Konvertierung: Tools wie spatie/laravel-image-optimizer können Bilder während des Upload-Vorgangs automatisch in WebP konvertieren.
use Spatie\Image\Image;
use Spatie\Image\Manipulations;

Image::load('image.jpg')
    ->format(Manipulations::FORMAT_WEBP)
    ->save('image.webp');
  • Fallback für nicht unterstützte Browser: Nicht alle Browser unterstützen WebP. Verwenden Sie einen JavaScript-Fallback oder eine serverseitige Logik, um JPEG/PNG-Versionen für Browser bereitzustellen, die WebP nicht unterstützen.
<picture>
  <source srcset="image.webp" type="image/webp">
  <img src="image.jpg" alt="Fallback Image">
</picture>

6. Offscreen-Bilder in JavaScript zurückstellen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Tage von Miva: Tag 15Nächster Artikel:Tage von Miva: Tag 15