Maison > développement back-end > tutoriel php > Comment optimiser l'effet de chargement paresseux des images via les fonctions php ?

Comment optimiser l'effet de chargement paresseux des images via les fonctions php ?

王林
Libérer: 2023-10-05 12:14:01
original
974 Les gens l'ont consulté

Comment optimiser leffet de chargement paresseux des images via les fonctions php ?

Comment optimiser l'effet de chargement paresseux des images via les fonctions PHP ?

Avec le développement d'Internet, le nombre d'images sur les pages Web augmente, ce qui exerce une pression sur la vitesse de chargement des pages. Afin d'améliorer l'expérience utilisateur et de réduire le temps de chargement, nous pouvons utiliser la technologie de chargement différé d'image. Le chargement paresseux des images peut retarder le chargement des images. Les images ne sont chargées que lorsque l'utilisateur fait défiler vers la zone visible, ce qui peut réduire le temps de chargement de la page et améliorer l'expérience utilisateur.

Lors de l'écriture de pages Web PHP, nous pouvons optimiser l'effet de chargement paresseux des images en écrivant certaines fonctions. Ce qui suit décrit en détail comment implémenter le chargement paresseux d'images via les fonctions PHP.

La première étape consiste à obtenir tous les liens d'images
Tout d'abord, nous devons obtenir les liens vers toutes les images de la page actuelle. Ceci peut être réalisé en utilisant la fonction preg_match_all et les expressions régulières, comme indiqué ci-dessous : preg_match_all 函数和正则表达式来实现,如下所示:

function get_image_urls($html) {
    $pattern = '/<img [^ alt="Comment optimiser l'effet de chargement paresseux des images via les fonctions 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);
Copier après la connexion

第二步,生成图片占位符
在页面加载完成之前,我们需要为每个要懒加载的图片生成一个占位符,这样可以避免页面布局的重排。我们可以使用 <img alt="Comment optimiser l'effet de chargement paresseux des images via les fonctions php ?" > 标签的 data-src 属性来保存图片的真实链接,使用占位符显示图片。

function generate_placeholder($image_url) {
    return '<img  src="placeholder.jpg" class="lazy" data-src="' . $image_url . '" alt="Comment optimiser l'effet de chargement paresseux des images via les fonctions php ?" >';
}

$placeholders = array_map('generate_placeholder', $image_urls);
Copier après la connexion

在上述代码中,placeholder.jpg 是一个占位图片,可以根据实际情况替换为其他图片。lazy 类可以用于标识延迟加载的图片。

第三步,监听页面滚动事件
我们需要监测用户的滚动行为,当用户滚动到图片的可视区域时,我们将图片的真实链接赋值给 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);
Copier après la connexion

在上述代码中,我们使用 JavaScript 来监听页面的滚动事件,并根据图片是否在可视区域内来判断是否加载图片。

第四步,样式优化
为了优化用户体验,我们可以给图片添加一些渐进加载的效果,如淡入淡出效果。可以通过 CSS 来实现。

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

.lazy.show {
    opacity: 1;
}
Copier après la connexion

在 CSS 中,我们为 .lazy 类设置了一个过渡效果。当图片加载完成后,添加 .showrrreee

La deuxième étape consiste à générer des espaces réservés pour les images

Avant le chargement de la page, nous devons charger paresseusement chaque Générer un espace réservé pour l’image, ce qui peut éviter la réorganisation de la mise en page. Nous pouvons utiliser l'attribut data-src de la balise <img alt="Comment optimiser l'effet de chargement paresseux des images via les fonctions php ?" > pour enregistrer le lien réel de l'image et utiliser un espace réservé pour afficher l'image.
rrreee

Dans le code ci-dessus, placeholder.jpg est une image d'espace réservé et peut être remplacée par d'autres images en fonction de la situation réelle. La classe lazy peut être utilisée pour identifier les images chargées paresseusement.

La troisième étape consiste à surveiller l'événement de défilement de la page🎜Nous devons surveiller le comportement de défilement de l'utilisateur lorsque l'utilisateur fait défiler vers la zone visible de l'image, nous attribuons le lien réel de l'image au src. Attribut pour implémenter l'image de chargement. 🎜rrreee🎜Dans le code ci-dessus, nous utilisons JavaScript pour écouter l'événement de défilement de la page et déterminer s'il faut charger l'image en fonction du fait que l'image se trouve dans la zone visible. 🎜🎜La quatrième étape, l'optimisation du style🎜Afin d'optimiser l'expérience utilisateur, nous pouvons ajouter des effets de chargement progressif aux images, tels que des effets de fondu d'entrée et de sortie. Ceci peut être réalisé via CSS. 🎜rrreee🎜En CSS, nous définissons un effet de transition pour la classe .lazy. Lorsque l'image est chargée, ajoutez la classe .show pour afficher l'image. 🎜🎜Résumé🎜Grâce à la fonction PHP ci-dessus, nous pouvons obtenir l'effet de chargement paresseux des images. Tout d’abord, obtenez les liens de toutes les images de la page, puis générez des espaces réservés, écoutez les événements de défilement de page pour déterminer s’il faut charger les images et ajoutez une optimisation de style. Cela peut réduire efficacement le temps de chargement des pages et améliorer l’expérience utilisateur. 🎜🎜Le code fourni ci-dessus n'est qu'un exemple, vous pouvez le modifier et l'optimiser en fonction de vos besoins et de votre situation réelle. J'espère que ça aide ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal