ホームページ >バックエンド開発 >PHPチュートリアル >PHP関数を通じて画像の遅延読み込み効果を最適化するにはどうすればよいですか?

PHP関数を通じて画像の遅延読み込み効果を最適化するにはどうすればよいですか?

王林
王林オリジナル
2023-10-05 12:13:42972ブラウズ

PHP関数を通じて画像の遅延読み込み効果を最適化するにはどうすればよいですか?

PHP 関数を使用して画像の遅延読み込み効果を最適化するにはどうすればよいですか?

インターネットの発展に伴い、Web ページ内の画像の数が増加し、ページの読み込み速度に圧力がかかっています。ユーザーエクスペリエンスを向上させ、読み込み時間を短縮するために、画像の遅延読み込みテクノロジーを使用できます。画像の遅延読み込みにより、画像の読み込みが遅れる可能性があります。画像は、ユーザーが表示領域までスクロールしたときにのみ読み込まれるため、ページの読み込み時間が短縮され、ユーザー エクスペリエンスが向上します。

PHP Web ページを作成する場合、いくつかの関数を作成することで画像の遅延読み込み効果を最適化できます。以下では、PHP 関数を使用して画像の遅延読み込みを実装する方法を詳しく説明します。

最初のステップはすべての画像リンクを取得することです
まず、現在のページ内のすべての画像へのリンクを取得する必要があります。これは、以下に示すように、preg_match_all 関数と正規表現を使用することで実現できます。

function get_image_urls($html) {
    $pattern = '/<img [^ alt="PHP関数を通じて画像の遅延読み込み効果を最適化するにはどうすればよいですか?" >]+src=["']([^"']+)["'][^>]*>/i';
    preg_match_all($pattern, $html, $matches);
    return $matches[1];
}

$html = file_get_contents('http://example.com');
$image_urls = get_image_urls($html);

2 番目のステップは、画像プレースホルダーを生成することです。
ページが読み込まれる前に、遅延して読み込まれる各画像のプレースホルダーを生成します。これにより、ページ レイアウトのリフローを回避できます。 <img alt="PHP関数を通じて画像の遅延読み込み効果を最適化するにはどうすればよいですか?" > タグの data-src 属性を使用して画像の実際のリンクを保存し、プレースホルダーを使用して画像を表示できます。

function generate_placeholder($image_url) {
    return '<img  src="placeholder.jpg" class="lazy" data-src="' . $image_url . '" alt="PHP関数を通じて画像の遅延読み込み効果を最適化するにはどうすればよいですか?" >';
}

$placeholders = array_map('generate_placeholder', $image_urls);

上記のコードの placeholder.jpg はプレースホルダー画像であり、実際の状況に応じて他の画像に置き換えることができます。 lazy このクラスは、遅延ロードされたイメージを識別するために使用できます。

3 番目のステップ、ページ スクロール イベントをリッスンします
ユーザーのスクロール動作を監視する必要があります。ユーザーが画像の表示領域までスクロールすると、実際のリンクを割り当てます。画像を src## に # 画像の読み込みを実装する属性。

function load_image($image_url) {
    echo "<script>
        window.addEventListener('scroll', function() {
            var images = document.querySelectorAll('.lazy');
            Array.prototype.forEach.call(images, function(image) {
                var rect = image.getBoundingClientRect();
                if(rect.top >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)) {
                    image.src = image.dataset.src;
                    image.classList.remove('lazy');
                }
            });
        });
    </script>";
}

array_map('load_image', $image_urls);

上記のコードでは、JavaScript を使用してページのスクロール イベントをリッスンし、画像が表示領域内にあるかどうかに基づいて画像を読み込むかどうかを決定します。

4 番目のステップ、スタイルの最適化

ユーザー エクスペリエンスを最適化するために、フェードイン効果やフェードアウト効果などのプログレッシブ読み込み効果を画像に追加できます。これは CSS を通じて実現できます。

.lazy {
    opacity: 0;
    transition: opacity 0.3s;
}

.lazy.show {
    opacity: 1;
}

CSS で、

.lazy クラスのトランジション効果を設定します。画像が読み込まれたら、画像を表示するための .show クラスを追加します。

概要

上記の PHP 関数を通じて、画像の遅延読み込み効果を実現できます。まず、ページ上のすべての画像のリンクを取得し、次にプレースホルダーを生成し、ページ スクロール イベントをリッスンして画像を読み込むかどうかを決定し、スタイルの最適化を追加します。これにより、ページの読み込み時間を効果的に短縮し、ユーザー エクスペリエンスを向上させることができます。

上記のコードは単なる例であり、ニーズや実際の状況に応じて変更および最適化できます。お役に立てば幸いです!

以上がPHP関数を通じて画像の遅延読み込み効果を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。