首页 > 其他分享 >前端性能优化措施---服务器优化--03

前端性能优化措施---服务器优化--03

时间:2024-08-03 11:29:00浏览次数:12  
标签:03 缓存 -- CDN 查询 user 服务器 优化

前端性能优化不仅限于客户端的代码优化,还涉及到服务器端的优化。服务器优化对提升网站性能、减少延迟、提高用户体验至关重要。

服务器优化技术,包括减少 HTTP 请求、使用缓存策略、内容压缩、CDN 加速、服务器端渲染(SSR)、优化数据库查询等。

1. 减少 HTTP 请求

每次 HTTP 请求都会增加服务器负担和网络延迟,减少 HTTP 请求数量是提高性能的有效手段。

优化建议:

  • 合并文件:将多个 CSS、JavaScript 文件合并成一个文件,减少请求次数。
  • CSS Sprite:将多个小图标合并到一张大图中,通过背景定位显示不同图标。
  • 内联小资源:对于体积较小的 CSS 和 JavaScript 文件,可以直接内联到 HTML 中,减少请求。

示例:

<!-- 合并前 -->
<link rel="stylesheet" href="styles1.css">
<link rel="stylesheet" href="styles2.css">
<script src="script1.js"></script>
<script src="script2.js"></script>

<!-- 合并后 -->
<link rel="stylesheet" href="styles.css">
<script src="scripts.js"></script>

 

2. 使用缓存策略

缓存可以显著减少服务器负载和响应时间,提高用户体验。常见的缓存策略包括浏览器缓存、CDN 缓存和服务器端缓存。

优化建议:

  • 设置缓存头:通过 HTTP 头信息(如 Cache-ControlExpires)设置浏览器缓存策略。
  • 使用 ETag:ETag(实体标签)用于标识资源的版本,帮助浏览器判断资源是否被修改。
  • 启用 CDN 缓存:CDN 可以缓存静态资源,减少服务器负载和用户请求延迟。

示例:

Cache-Control: max-age=3600, must-revalidate
ETag: "1234567890abcdef"

 

 

3. 内容压缩

压缩静态资源可以显著减少文件体积,加快传输速度。常见的压缩方法包括 Gzip 和 Brotli。

优化建议:

  • 启用 Gzip/Brotli 压缩:在服务器配置中启用 Gzip 或 Brotli 压缩,压缩 HTML、CSS、JavaScript 文件。
  • 压缩图片:使用工具(如 ImageOptim、TinyPNG)压缩图片文件,减少图片体积。

示例:

# Nginx 配置
gzip on;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/json;
gzip_min_length 256;

# Brotli 配置
brotli on;
brotli_types text/plain application/javascript application/x-javascript text/javascript text/css application/json;
brotli_min_length 256;

 

 

4. CDN 加速

内容分发网络(CDN)通过将静态资源分发到全球各地的服务器节点,减少传输距离和延迟,提高资源加载速度。

优化建议:

  • 选择合适的 CDN 提供商:根据业务需求选择合适的 CDN 提供商,如 Cloudflare、Akamai、AWS CloudFront 等。
  • 配置 CDN 缓存策略:设置合理的缓存策略,确保静态资源能够被 CDN 节点有效缓存。
  • 使用 CDN 提供的优化功能:如自动压缩、图片优化、动态内容加速等。

5. 服务器端渲染(SSR)

服务器端渲染(SSR)可以显著提高页面的首屏加载速度,尤其适用于内容丰富、交互复杂的页面。SSR 通过在服务器端生成 HTML,将生成的 HTML 直接返回给浏览器,减少浏览器渲染时间。

优化建议:

  • 使用现代框架:如 Next.js(基于 React)、Nuxt.js(基于 Vue),这些框架提供了开箱即用的 SSR 支持。
  • 合理拆分页面:将页面分成多个独立的组件,按需加载,减少服务器渲染压力。
  • 数据预取和缓存:在服务器端预取必要的数据,并进行缓存,减少数据库查询次数。

示例:

// 使用 Next.js 实现 SSR
import React from 'react';
import axios from 'axios';

const HomePage = ({ data }) => (
  <div>
    <h1>Home Page</h1>
    <p>{data.message}</p>
  </div>
);

export async function getServerSideProps() {
  const res = await axios.get('https://api.example.com/data');
  return { props: { data: res.data } };
}

export default HomePage;

 

 

6. 优化数据库查询

数据库查询效率直接影响服务器性能,优化数据库查询可以显著减少响应时间,提高应用性能。

优化建议:

  • 使用索引:为常用的查询字段添加索引,提高查询效率。
  • 优化查询语句:避免使用低效的查询语句,如 SELECT *,尽量只查询必要的字段。
  • 使用缓存:使用 Redis、Memcached 等缓存数据库查询结果,减少数据库负载。
  • 优化数据库结构:根据业务需求合理设计数据库结构,避免冗余数据和不必要的联表查询。

示例:

-- 创建索引
CREATE INDEX idx_user_id ON users(user_id);

-- 优化查询语句
SELECT user_id, user_name FROM users WHERE user_id = 1;

-- 使用 Redis 缓存
const redis = require('redis');
const client = redis.createClient();

client.get('user:1', (err, data) => {
  if (data) {
    console.log('Cache hit:', JSON.parse(data));
  } else {
    // 从数据库查询
    db.query('SELECT user_id, user_name FROM users WHERE user_id = 1', (err, result) => {
      if (result) {
        client.set('user:1', JSON.stringify(result));
        console.log('Cache miss:', result);
      }
    });
  }
});

 

标签:03,缓存,--,CDN,查询,user,服务器,优化
From: https://www.cnblogs.com/zx618/p/18340255

相关文章

  • 第六章 死锁
    第六章死锁6.1资源资源就是随着时间的推移,必须能获得、使用以及释放的任何东西。6.1.1可抢占资源和不可抢占资源资源分为两类:可抢占的和不可抢占的。可抢占资源(preemptableresource)可以从拥有它的进程中抢占而不会产生任何副作用,存储器就是一类可抢占的资源。......
  • fNIRS实验设计注意内容
    经典实验设计事件相关设计(event-related,ER)和组块设计(block)是最为经典的实验设计。其中ER设计又可以分为慢速ER设计与快速ER设计。ER和Block设计各有优劣,且两者在基于血液响应函数的研究设备的实验中应用有所不同。两类实验设计差异检测能力和估计能力在众多教材中都有所涉及的......
  • 基于Java Springboot医疗废弃物收运管理系统
    作者介绍:✌全网粉丝10W+本平台特邀作者、博客专家、CSDN新星计划导师、软件领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于项目实战✌一、作品包含源码+数据库+设计文档万字+PPT+全套环境和工具资源+部署教程二、项目技术前端技术:Html......
  • Ubuntu20.04 + Mysql8.0安装
    1.安装MySQL8.0sudoaptupdatesudoapt-getinstallsoftware-properties-commonsudoapt-getinstallwgetwget-chttps://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.debsudodpkg-imysql-apt-config_0.8.22-1_all.debsudoapt-getinstallmysql-server......
  • 嵌入式实习--MobaXterm连接开发板与SSH远端服务器详细使用教程
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、前期准备二、安装USB串口模块驱动1.1驱动未自动安装二、MobaXterm安装使用2.1MobaXterm软件安装2.2MobaXterm软件使用2.2.1连接开发板2.2.2远程SSH连接服务器前言在嵌入式Li......
  • Ubuntu22.04 + 阿里云Docker安装及镜像加速
    1.docker安装1.1阿里云方式安装(https://developer.aliyun.com/article/110806)使用官方安装脚本自动安装(仅适用于公网环境)curl-fsSL https://get.docker.com |bash-sdocker--mirrorAliyun手动安装帮助(阿里云ECS可以通过内网安装,见注释部分内容)Ubuntu14.0416.0......
  • 基于Java Springboot反诈科普微信小程序
    作者介绍:✌全网粉丝10W+本平台特邀作者、博客专家、CSDN新星计划导师、软件领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于项目实战✌一、作品包含源码+数据库+设计文档万字+PPT+全套环境和工具资源+部署教程二、项目技术前端技术:Html......
  • OpenCV||超细节的基本操作
    一、图像读取retval=cv2.imread(filename[,flags])filename:需要读取的图片路径名,支持多种图片格式,如JPEG、PNG、TIFF等。flags:一个可选参数,指定加载图像的颜色类型。常用的值包括:cv2.IMGEAD_ANYDEPTH:其值是2。若载入的图像深度为16位或32位,就返回对应深度的图像,否则转......
  • 抖音评论自动回复固定话语,抖音私信企业多员工号统一接待回复
    我们智能客服系统可以实现抖音评论自动回复固定话语,抖音私信企业多员工号统一接待回复演示:gofly.v1kf.com抖音授权接入授权接入有两种方式:登录注册页面,直接抖音扫码登入后台前往【菜单】【团队设置】【抖音接入】【扫码授权】,这个地方可以在一个客服账号下绑定多个抖音,方便......
  • OpenCV||超详细的图像平滑
    消除噪声的工作称为图像平滑平滑处理算法:基于二维离散卷积的高斯平滑、均值平滑;基于统计学方法的中值平滑;具备保持边缘作用的双边滤波、导向滤波。平滑滤波算法:线性平滑、非线性平滑、自适应平滑一、线性滤波1.1归一化方框滤波器概述:归一化方框滤波器,也被称为均值滤波......