// 引入 lazysizes
document.addEventListener("DOMContentLoaded", function() {
var lazyImages = [].slice.call(document.querySelectorAll("img.lazyload"));
if ("IntersectionObserver" in window) {
let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
let lazyImage = entry.target;
lazyImage.src = lazyImage.dataset.src;
lazyImage.classList.remove("lazyload");
lazyImageObserver.unobserve(lazyImage);
}
});
});
lazyImages.forEach(function(lazyImage) {
lazyImageObserver.observe(lazyImage);
});
} else {
// Fallback for browsers that do not support IntersectionObserver
// You could use a simple scroll event listener here
}
});
1. 使用 WebP 格式:WebP 是一种现代的图片格式,提供比 JPEG 和 PNG 更好的压缩率,可以显著减少图片文件大小。不过需要注意的是,WebP 的兼容性不如 JPEG 和 PNG 广泛,不过对于主流浏览器(如 Chrome, Android Browser, Safari 等),已经得到了良好的支持。
2. 图片压缩:对图片进行适当的压缩,可以减少图片文件大小,从而加快加载速度。但是要注意不要过度压缩,否则会影响图片质量。可以使用工具如 TinyPNG 或 ImageOptim 来压缩图片。
3. 响应式设计:根据设备的屏幕尺寸和分辨率加载不同大小的图片。这可以通过 CSS 的
srcset属性来实现。4. 懒加载:虽然你已经尝试了
loading="lazy",但可能还需要进一步优化懒加载的实现。除了原生的loading="lazy"属性外,也可以使用 JavaScript 库如lazysizes来实现更复杂的懒加载逻辑。5. 缓存策略:通过设置正确的 HTTP 头信息,可以有效地利用浏览器缓存,减少重复下载图片的时间。可以使用
Cache-Control和Expires头来控制缓存行为。以上这些方法结合起来使用,应该能有效改善移动端图片加载速度的问题。当然,具体实施时还需要根据实际情况进行调整和测试。