图片预加载和懒加载的多种方法

34 篇文章 1 订阅
15 篇文章 0 订阅

图片预加载和懒加载

图片懒加载

在渲染页面的时候,先将图片用一张默认图片代替,当图片到达浏览器可视区域时,才显示真实的图片。

这样的好处是,可以减缓服务器负担,加快初始界面的渲染速度。

实现方式:

  • 使用setTimeOut或setInterval定时器进行延迟加载
  • 条件加载,符合条件或触发事件后再进行异步下载
  • 通过滚动条监听用户距图片距离,快要到达之前进行加载
// 通过滚动条监听用户距图片距离,到达进行加载
    let img = document.querySelector('img')
    function lazyLoad(){
      let viewHeight = document.documentElement.clientHeight
      let scrollTop = document.documentElement.scrollTop
      // 判断图片是否进入可视区
      if(img.offsetTop < viewHeight+scrollTop){
        var url ="https://himg.bdimg.com/sys/portraitn/item/46ecf7f5"
        img.src = url
      }
    }
    window.addEventListener('scroll',lazyLoad)
图片预加载

与懒加载相反,先将图片提前加载到缓存,用户一打开页面就能快速呈现图片。

好处是,遇到一些较大的图片时,可以避免页面慢慢渲染。但是服务器负担会增大。

实现方式:

  • css的background元素会自动预加载
// 预加载的图片不能使用dispaly:none隐藏,只能将其宽高设为0或者移到看不见的地方
  <style>
    li{
      list-style: none;
    }
    #img {
    background-image: url('https://himg.bdimg.com/sys/portraitn/item/46ecf7f5');
    width: 0;
    height: 0;  
    }
  </style>

<body>
  <li id="img"></li>
  <button>点击展示</button>

  <script>
    let btn =  document.querySelector('button')
    let li = document.querySelector('li')
    btn.addEventListener('click',function(){
      let myImg = document.createElement('img')
      myImg.src = 'https://himg.bdimg.com/sys/portraitn/item/46ecf7f5'
      li.appendChild(myImg)
    })

  </script>
  
</body>
  • JavaScript则常用new Image()实现
    // 预加载图片路径
    const urlList = [
    'https://himg.bdimg.com/sys/portraitn/item/46ecf7f5'
    ]

    function preLoad(){
      let img = new Image()
      img.src = urlList[0]
      // onload是图片加载完成事件
      img.onload = function(){
        console.log('图片预加载成功');
      }
    }
    preLoad()

附:网页视图的api
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前端图片懒加载(Image Lazy Loading)和路由懒加载(Route Lazy Loading)是两种不同的优化技术,用于提高用户体验和网站性能。 1. **图片懒加载**: - 图片懒加载是一种延迟加载策略,当用户滚动到图片所在位置时才加载图片,而不是在页面加载初期就全部加载。这有助于减少初始页面加载时间,尤其是在内容较多或图片数量较大的情况下。 - 常见实现方式包括使用Intersection Observer API(Intersection Observer API是一个浏览器原生API,用于检测元素是否进入视口),或者利用HTML的`<img>`标签的`srcset`和`loading`属性,如`loading="lazy"`。 - 相关问题: 1. 如何使用Intersection Observer API实现懒加载? 2. `srcset`和`loading="lazy"`如何协同工作? 3. 图片懒加载对SEO有影响吗? 2. **路由懒加载**: - 路由懒加载是针对单页应用(SPA)的一种优化,只在用户导航到特定路由时才加载该路由对应的组件或模块,而不是一开始就下载所有可能的页面内容。 - 这通常在服务器端渲染(SSR)、动态导入(Dynamic Import)或路由加载(Preloading)时使用,比如React的`import()`函数或Vue的`require()`。 - 相关问题: 1. 如何在Vue中实现路由懒加载? 2. SSR和路由懒加载有什么区别? 3. 使用动态导入时如何处理异步依赖? 两者都是前端性能优化的重要手段,可以帮助提高网页的加载速度和用户交互体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的战斗鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值