网站性能不佳?试试这十大前端性能优化技巧!(一)

简介: 网站性能不佳?试试这十大前端性能优化技巧!

1. 减少 HTTP 请求的数量和大小,合并、压缩、缓存静态资源,避免重复请求和无用请求。

以下是一个使用 Node.jsGulp 自动化构建工具来合并、压缩和缓存静态资源的示例:

1. 安装 Gulp 和相关依赖:

$ npm install gulp gulp-concat gulp-uglify gulp-rename gulp-cache

2. 在项目目录下创建 gulpfile.js 文件,开始配置:

const gulp = require('gulp');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const rename = require('gulp-rename');
const cache = require('gulp-cache');
// 合并、压缩、重命名 js
gulp.task('scripts', function () {
  return gulp.src('src/js/*.js')
    .pipe(concat('main.js'))
    .pipe(gulp.dest('dist/js'))
    .pipe(rename({suffix: '.min'}))
    .pipe(uglify())
    .pipe(gulp.dest('dist/js'))
});
// 缓存静态资源
gulp.task('cache', function() {
  return gulp.src('src/**/*.{js,css,png,jpeg,gif,svg}')
    .pipe(cache())
    .pipe(gulp.dest('dist'))
});
// 监听文件变化
gulp.task('watch', function () {
  gulp.watch('src/js/*.js', gulp.series('scripts'));
  gulp.watch('src/**/*.{js,css,png,jpeg,gif,svg}', gulp.series('cache'));
});
// 执行所有任务
gulp.task('default', gulp.parallel(['scripts', 'cache', 'watch']));

3. 运行 Gulp 自动化构建工具:

$ gulp

4. 完成后,合并、压缩、重命名后的静态资源将会保存到 dist 目录下,可以直接通过 HTML 中引用来使用它们。

通过上述代码案例,我们可以使用 Gulp 自动化构建工具对静态资源进行合并、压缩和缓存,有效地减少 HTTP 请求的数量和大小,避免重复请求和无用请求,优化网页性能和用户体验。

2. 减少 JavaScript 和 CSS 文件的大小和数量,避免不必要的代码。

以下是一个使用 WebpackBabel 来减少 JavaScript 文件大小和数量的示例:

1. 安装 Webpack 和相关依赖:

$ npm install webpack webpack-cli webpack-dev-server babel-loader @babel/core @babel/preset-env

2. 创建一个 src 目录并添加 index.js 文件和 styles.css 文件:

// index.js
const sum = (a, b) => a + b;
console.log(sum(2, 2));
// styles.css
body {
  background-color: #f0f0f0;
}

3. 在项目目录下创建 webpack.config.js 文件,开始配置:

const path = require('path');
module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'main.js',
    path: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }
      },
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader'],
      },
    ],
  },
};

4. 在 package.json 中添加命令:

"scripts": {
  "build": "webpack",
  "dev": "webpack-dev-server --open"
},

5. 运行构建命令:

$ npm run build

6. 完成后,输出的 main.js 文件大小将会更小,不必要的代码已经被自动去除。

通过使用 WebpackBabel 实现 JavaScript 文件的压缩和精简,可以有效减少文件大小和数量,提升网页性能和用户体验。类似的,使用类似 CSS Nano 的工具可以对 CSS 文件进行压缩和精简,也可以进一步减少文件大小和数量。

3. 使用浏览器缓存避免重复请求。可以使用强缓存和协商缓存配合使用。

以下是一个使用 Express.jsETag 缓存协商来减少不必要的请求的示例:

1. 安装 Express.js 和相关依赖:

$ npm install express ejs

2. 在项目目录下创建 app.js 文件,开始配置:

const express = require('express');
const ejs = require('ejs');
const app = express();
// 设置 EJS 模板引擎
app.set('views', './views');
app.set('view engine', 'ejs');
// 定义路由
app.get('/', (req, res) => {
  // 设置强缓存
  res.setHeader('Cache-Control', 'public, max-age=60, immutable');
  // 生成 ETag
  const content = `
    <h1>Hello, World!</h1>
    <p>This is a simple web page.</p>
  `;
  const hash = require('crypto').createHash('md5').update(content).digest('base64');
  const etag = `"${hash}"`;
  // 判断 ETag 是否匹配
  if (etag === req.headers['if-none-match']) {
    // 返回 304 Not Modified
    res.status(304).end();
  } else {
    // 返回页面内容和 ETag
    res.setHeader('ETag', etag);
    res.render('index', { content });
  }
});
// 启动服务器
app.listen(3000, () => {
  console.log('Server is running at http://localhost:3000');
});

3. 在 views 目录下创建一个 index.ejs 模板文件:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>My Web Page</title>
</head>
<body>
  <%- content %>
</body>
</html>

4. 运行 Node.js 服务器:

$ node app.js

5. 访问 http://localhost:3000,页面内容会被缓存,除非 ETag 发生变化,否则客户端会从缓存中加载。

通过使用强缓存和 ETag 缓存协商机制,可以在服务器端避免不必要的请求,减少带宽消耗和页面加载时间,优化网页性能和用户体验。

4. 延迟加载图片和视频,使用图片和视频懒加载技术,只在需要时加载文件。

好的,以下是一个使用 Intersection Observer API 实现图片懒加载的示例:

1. 在 HTML 中标记需要延迟加载的图片,使用 data-src 属性替代 src 属性:

<img data-src="image.jpg" alt="My Image">

2. 在 CSS 中定义占位符样式,确保页面布局不会因未加载的图片而发生变化:

img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  background-color: #f0f0f0;
}

3. 在 JavaScript 中使用 Intersection Observer API 监视图片元素是否进入视口:

const images = document.querySelectorAll('img[data-src]');
const options = {
  rootMargin: '0px',
  threshold: 0.1
};
const observer = new IntersectionObserver(entries => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      const src = img.getAttribute('data-src');
      img.setAttribute('src', src);
      img.removeAttribute('data-src');
      observer.unobserve(img);
    }
  });
}, options);
images.forEach(img => {
  observer.observe(img);
});

4. 运行页面,当图片元素进入视口时,data-src 属性将会被替换成真正的 src 属性,图片将会被加载。

通过使用 Intersection Observer API 实现图片懒加载,可以延迟加载页面中的图片和视频,提高页面加载速度和用户体验,减少带宽消耗和服务器负载。


网站性能不佳?试试这十大前端性能优化技巧!(二)https://developer.aliyun.com/article/1426477

相关文章
|
前端开发 JavaScript 开发者
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。
|
缓存 前端开发 JavaScript
前端框架的数据驱动方式对性能有哪些影响?
前端框架的数据驱动方式对性能有哪些影响?
205 49
|
前端开发 JavaScript API
惊呆了!这些前端技术竟然能让你的网站实现无缝滚动效果!
【10月更文挑战第30天】本文介绍了几种实现网页无缝滚动的技术,包括CSS3的`scroll-snap`属性、JavaScript的Intersection Observer API以及现代前端框架如React和Vue的动画库。通过示例代码展示了如何使用这些技术,帮助开发者轻松实现流畅的滚动效果,提升用户体验。
1129 29
|
前端开发 JavaScript 搜索推荐
前端懒加载:提升页面性能的关键技术
前端懒加载是一种优化网页加载速度的技术,通过延迟加载非首屏内容,减少初始加载时间,提高用户访问体验和页面性能。
|
数据采集 缓存 监控
如何优化前端框架的数据驱动方式以提高性能?
综上所述,通过多种手段的综合运用,可以有效地优化前端框架的数据驱动方式,提高应用的性能,为用户带来更好的体验。同时,随着技术的不断发展和进步,我们需要不断探索和创新,以找到更适合的优化方法和策略。
|
存储 编解码 前端开发
惊!前端新手也能秒懂的高级技巧,轻松提升网页颜值与性能!
本文针对前端新手,介绍了三个简单易学的高级技巧,帮助提升网页的颜值和性能。包括使用CSS框架快速美化网页、优化图片资源加快加载速度,以及利用ARIA属性和媒体查询提高网页的可访问性和响应性。示例代码清晰,适合初学者上手实践。
242 3
|
前端开发 JavaScript UED
惊呆了!这些前端技巧竟然能让你的网站秒变高大上,赶快学起来!
前端技术是网页设计的核心,能够显著提升用户体验和网站竞争力。本文介绍了三种实用的前端技巧:动态背景效果、微交互设计和响应式设计。通过CSS动画和JavaScript,可以实现视觉吸引的动态背景;微交互设计如按钮点击效果能增强用户参与感;响应式设计则确保网站在不同设备上呈现良好效果。这些技巧简单易学,效果显著,值得尝试。
270 3
|
移动开发 前端开发 JavaScript
惊!这些前端技术竟然能让你的网站在移动端大放异彩!
随着互联网技术的发展,移动设备成为主要的上网工具。本文介绍了几种关键的前端技术,包括响应式设计、图片优化、字体选择、HTML5和CSS3的应用、性能优化及手势操作设计,帮助开发者提升网站在移动端的显示效果和用户体验。示例代码展示了如何实现简单的双向绑定功能。
246 3
|
前端开发 JavaScript API
惊呆了!这些前端技巧竟然能让你的网站支持AR/VR体验!
【10月更文挑战第31天】在数字化时代,用户对网页交互体验的要求日益提高,传统二维网页已难以满足需求。本文介绍如何利用前端技术,特别是Three.js,实现AR/VR体验,提升用户满意度和网站价值。通过示例代码,展示如何创建简单的3D场景,并探讨AR/VR技术的基本原理和常用工具,帮助开发者打造沉浸式体验。
817 6
|
JSON 前端开发 搜索推荐
惊!这些前端技术竟然能让你的网站实现个性化推荐功能!
【10月更文挑战第30天】随着互联网技术的发展,个性化推荐已成为提升用户体验的重要手段。前端技术如JavaScript通过捕获用户行为数据、实时更新推荐结果等方式,在实现个性化推荐中扮演关键角色。本文将深入解析这些技术,并通过示例代码展示其实际应用。
643 4

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    675
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    284
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    252
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    199
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    306
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    448
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    196
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    140
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    208
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    282