web前端性能优化方法

前端性能优化是常见的问题,以下是一些需要性能优化的地方以及优化方法:

1.图片优化:图片占用网页加载时间的比例很大,因此要尽量减小图片的大小。一些常用的优化方法包括选择适当的图片格式(如 PNG、JPEG 等)、使用图片压缩工具、使用 CSS Sprites 组合多个图片等。

//使用 CSS Sprites 组合多个图片
.icon {
  background-image: url('sprites.png');//一张大图,里面有很多小图
  background-repeat: no-repeat;
}

.icon-home {
  width: 32px;
  height: 32px;
  background-position: -10px -20px;//通过x,y坐标定位显示具体那张图片,大图的左上角坐标是(0,0)
}

.icon-user {
  width: 32px;
  height: 32px;
  background-position: -50px -20px;//通过x,y坐标定位显示具体那张图片,大图的左上角坐标是(0,0)
}

2.代码压缩和合并:将多个 CSS 或 JavaScript 文件压缩和合并成一个文件,可以减少文件的数量和大小,从而提高页面加载速度。

const ExtractTextPlugin = require('extract-text-webpack-plugin');
const UglifyPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
  entry: {
    app: './src/app.js',
    styles: './src/styles.scss'
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: ['css-loader', 'sass-loader']
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin('styles.css'),
    new UglifyPlugin()
  ]
};

3.减少 HTTP 请求:每个 HTTP 请求都会导致额外的服务器延迟和页面加载时间。因此,尽可能减少 HTTP 请求的数量可以改善网页性能。合并样式表和脚本,使用图像映射和数据 URI 等技术可以有效减少请求次数。

  1. 对HTML进行优化(包括上面1,2点都属于减少http请求)
<!--使用inline-resource插件将CSS或JavaScript(或一些小的图像)
代码内联到HTML页面中,通过减少HTTP请求来提高页面性能。-->

<!DOCTYPE html>
<html>
  <head>
    <title>My Webpage</title>
    <style>
      .box { width: 100px; height: 100px; background: red; }
    </style>
  </head>
  <body>
    <div class="box"></div>
    <script>
      console.log('Hello, world!');
    </script>
  </body>
</html>

4.延迟加载:页面中某些元素(如图片、视频等)可能并不是页面首次加载时就必须显示的,因此可以将这些元素设置为延迟加载,等到用户快速滚动到它们附近时再加载这些元素。

  1. 图片延迟加载

图像延迟加载是网页性能优化的常用方法,这是因为大多数网站包含多张图片,而图片文件通常是 HTML 页面中最大的占用空间的内容之一。图片延迟加载可以通过让网站仅在页面被滚动到图片显示位置上时,才加载这些图片来降低网页相关内容的加载速度。比如,使用 jQuery Lazyload 插件就可以实现图片的延迟加载。下面是一个例子:

<img class="lazy" data-original="img/example.jpg" src="img/placeholder.jpg" />

<script src="js/jquery.min.js"></script>
<script src="js/jquery.lazyload.min.js"></script>

<script>
$(function() {
  $("img.lazy").lazyload();
});
</script>

      2.延迟加载Iframe

在许多网站上,会包含iframe标签,主要作用就是将另一张网页嵌入到主页中。如果你需要显示的IFrame网页很大,那么实现延迟加载是非常有必要的。可以使用第三方JS库(如:Lazyframe.js等)或自行编写脚本来实现延迟加载。即在iframe源路径为空或仅包含占位符的情况下,使用JS监听滚动事件,当IFrame元素进入视口区域时,再设置iframe的 src 属性为真正的源路径。

<div class="iframe-wrap">
  <iframe src="" data-src="http://example.com"></iframe>
</div>

<script>
var lazyIframes = [].slice.call(document.querySelectorAll('iframe[data-src]'));

if ('IntersectionObserver' in window) {
  let lazyIframeObserver = new IntersectionObserver(function(entries, observer) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) {
        let lazyIframe = entry.target;
        lazyIframe.src = lazyIframe.dataset.src;
        lazyIframeObserver.unobserve(lazyIframe);
      }
    });
  });

  lazyIframes.forEach(function(lazyIframe) {
    lazyIframeObserver.observe(lazyIframe);
  });
}

</script>

5.使用缓存:浏览器缓存可以加快页面加载速度,减少网络请求次数。使用缓存的方法包括在服务器响应头中添加缓存控制头、在代码中使用自定义缓存控制等。

  • 可以使用响应头进行缓存
  • 也可以使用server worker进行缓存

6.减少 DOM 操作:DOM 操作是昂贵的,可以减少 DOM 操作的次数来提高网页性能。可以将多个 DOM 操作延迟到一个延迟加载的回调函数中,或者使用虚拟 DOM 技术减少 DOM 操作次数。

 

总之,通过以上的优化方法,可以减少页面加载时间、提高用户体验和优化页面性能,使页面更加高效和快速。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值