ホームページ > 記事 > ウェブフロントエンド > Laravel と JavaScript で画像を高速にロードする
Web 開発の世界では、Web サイトに画像が読み込まれる速度がユーザー エクスペリエンスを左右する可能性があります。画像の読み込みが遅いと、直帰率が高くなり、エンゲージメントが低下し、最終的には SEO に悪影響を及ぼす可能性があります。 Laravel と JavaScript を使用している場合、画像の読み込みを最適化し、Web アプリケーションが最高のパフォーマンスを発揮するように実装できる戦略がいくつかあります。このブログ投稿では、Laravel と JavaScript を使用して画像をより速く読み込むためのさまざまなテクニックを検討します。
コードレベルの最適化に入る前に、イメージ自体から始めることが重要です。ページの読み込みが遅くなる最も一般的な原因の 1 つは、大きな画像ファイルです。画像をアップロードする前に最適化するためのヒントをいくつか紹介します:
Laravel には、画像を効率的に管理および最適化するのに役立つ強力なツールが付属しています。 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');
遅延読み込みでは、画像がビューポートに入る直前まで読み込みが延期されるため、ページの初期読み込み時間を大幅に短縮できます。
<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); });
CDN は画像を複数のサーバーに世界中に配布するため、ユーザーは自分の場所に最も近いサーバーから画像をダウンロードできます。これにより、待ち時間が短縮され、画像の読み込みが高速化されます。
Storage::disk('s3')->put('path/to/image.jpg', $imageContent); $cdnUrl = Storage::disk('s3')->url('path/to/image.jpg');
WebP は、Web 上の画像に優れた可逆圧縮および非可逆圧縮を提供する最新の画像形式です。画像を WebP 形式で提供すると、品質を犠牲にすることなくファイル サイズを大幅に削減できます。
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>
オフスクリーン画像を延期することで、すぐに表示される画像のみが最初にロードされ、他の画像は後でロードされます。
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); });
Laravel および JavaScript プロジェクトでの画像の読み込みを最適化することは、高速で応答性の高いユーザー エクスペリエンスを提供するために重要です。画像の圧縮、遅延読み込みの活用、CDN の使用、WebP 形式の実装、CSS および JS ファイルの最適化により、Web サイト上の画像の読み込み時間を大幅に短縮できます。目標は、画質とパフォーマンスのバランスをとり、ユーザーにシームレスなエクスペリエンスを提供することであることを忘れないでください。
今すぐこれらの戦略の実装を開始し、Web サイトのパフォーマンスの違いを確認してください!
お楽しみください!
以上がLaravel と JavaScript で画像を高速にロードするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。