一台1M带宽的云服务器, 理论下载最大速度是128kb/s

现如今,前端项目构建后的文件动辄就是几M大小,那用户来访问岂不是需要10s以上

天呐,哪会有用户这么好心的等你这么久,早就溜了

那么如何优化访问速度呐,且听我细细道来

先体验优化后的服务器(3s左右打开)

先对比下优化前后的首页访问速度

左边是优化前访问速度(已经超过20s)

右边是优化后的访问速度(奇迹般的能到2s)

解决方案

扩容

扩容?这辈子都不会扩容

优化构建

要突破1M带宽的限制,首先想到的是把构建包的体积降下来,其次是减少首屏加载的资源,再者可以通过CDN加速静态资源访问

1.如何减小构建包体积

项目中使用很多第三方库(react、react-router、antd等等),把这些库提取出来就可以减少构建包的体积

webpack中的externals配置可以在打包时忽略这些第三方包,这样就有效减少包体积

// webpack.config.js

module.exports = {

// 通过externals配置,将react、react-dom、react-router、antd设置为打包时不参与构建

externals: {

// 左边key表示在import导入时的包名

// 右边的值表示外部引入导出的变量名-这个要写正确了

react: 'React',

'react-dom': 'ReactDOM',

'react-router': 'ReactRouter',

antd: 'antd',

}

};

那这些被导出的包该如何引用呐

在html文件中,使用script标签引入这些包就行

注意到上面的html模板中引用animate.min.css和antd.min.css

不止js有第三方包,css也有,那css也可以使用externals导出吗?

答案是:不能!

那这些第三方css库如何处理呐?

别慌,在使用antd,官方说使用babel-plugin-import这个插件可以达到按需加载的效果,例如若只使用Button这个组件,可以只引入Button相关的js代码和css代码,这样可以减少构建后文件大小

参考下这种按需加载的导入方式,来看下babel-plugin-import如何使用

// 这个插件的原理是找到libraryName对应的包名导入,将这一行代码重写一下

// 例如:import 'animate.css' 会被转换成 import './empty.css'

// 将三方包指向一个空的css文件,那打包的后会打包这个空的css文件,也就不会增加包的体积

// .babelrc.js

module.exports = {

plugins: [

[

'import',

{

libraryName: 'animate.css',

customName: name => './empty.css',

},

'animate.css',

],

[

'import',

{

libraryName: 'antd/dist/antd.less',

customName: name => './empty.css',

},

'antd/dist/antd.less',

],

],

}

2.如何减少首屏加载资源

减少首屏加载资源,就是把首屏不需要的资源延迟加载,以达到优化加载速度的目的。

一个站点可能会有多个路由,那么除了当前路由相关的资源需要加载,其他的路由的内容都应该被懒加载。

React提供了React.lazy方法来懒加载组件,React.lazy必须要被包裹在React.Suspense标签里。

要使用懒加载需要结合动态import()这个语法,使用babel的plugin-syntax-dynamic-import这个插件可以支持这个语法。

// 动态加载组件的一个写法

// 在路由引用一个组件时,使用这种方式把需要引用的组件包裹一下

/* loadable.js */

import React from 'react';

const Comp = React.lazy(() => import(/* webpackChunkName: 'preview' */ './index.js'));

export default () => ;

3.通过CDN加速静态资源访问

我们知道通过CDN访问静态资源可以加速资源获取,那再去云服务商开个CDN服务?

不必这么麻烦,市面上有可免费使用CDN镜像,使用他们提供的就可以,又可以节省一部分开支。

免费好用的cdn加速服务

最后来看下构建后的包的体积,先只关注bound.js

左边是未优化的构建结果js大小1.42M,那么首次加载就需要11s

右边是优化后的构建结果,js文件加起来总和才486k,首页的资源只有185k,那么理论加载速度只需要2s

这还只是对比的js的加载,再加上css的加载,性能提升更明显了

结语

本次优化使用的项目在 github

经过不懈的努力终于把网址首次加载速度降到3s

其实还有优化的地方,还要更多去探索,一起加油吧

服务器项目访问速度,【随心秀】优化1M带宽的云服务器访问速度相关推荐

  1. 1M带宽的云服务器能承受多少访问量

    几十元一个月,一百来元包年的云服务器通常在带宽配置上通常都是1M左右,这1M带宽大多都是公网带宽,很多用户在真正使用时又会觉得1M带宽太小,在实际使用中会觉得不够用. 每年在云服务器租用上,1M带宽的 ...

  2. 1m服务器能做什么网站,1M带宽的云服务器,能做什么?

    原标题:1M带宽的云服务器,能做什么? 在购买云服务器时,带宽也是影响价格的因素之一,而有一部分服务商给出的最低价格时,带宽往往只有1M. 那么1M带宽的云服务器,可以同时承受多少在线用户?能不能用最 ...

  3. 云服务器上传文件怎么这么慢,百度云上传速度慢怎么办?教你如何加快百度云上传速度...

    现在有很多朋友使用百度网盘进行资料存储,但是上传和下载的速度却总是有些问题.最近有位朋友的百度网盘下载速度很快,但是上传速度很慢的时候,不知道为什么会这样.那么,这种情况应该如何解决呢?下面就来看一下 ...

  4. 云服务器主体信息可以变更吗,云服务器备案号是什么?备案号存在能否更换云服务器?...

    在云计算时代,云服务器已经逐步取代了传统服务器并得到多数企业的应用,云服务器还是企业转到云端所必需的云服务产品.云服务器备受好评,其优势也不断吸引各种规模企业用户,因此大幅提高了企业上云率. 众所周知 ...

  5. 腾讯云服务器选购指南!如何选择一款适合自己的云服务器?

    如果你是第一次买云服务器,肯定会对云服务器比较陌生.从一些基本概念,到具体购买云服务器的流程,及使用方法都需要简单的了解.本文就针对云服务器的完全新手,来让你轻松入门开始使用云服务器. 云服务器的一些 ...

  6. 弹性服务器怎么上传文件,上传哪个文件夹弹性云服务器

    上传哪个文件夹弹性云服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 本节 ...

  7. Vue项目从 打包优化 到 上线部署 云服务器的全过程(**教你在云服务器上优化部署自己的项目**)

    前言 作为前端开发人员,我们不仅要会写代码,优化打包,上线部署也是一个前端工程师必备的技能,这篇文章就教大家从零开始,把一个完整项目打包发布到线上服务器.首先的准备工作就是需要一台云服务器. 项目打包 ...

  8. 云服务器带宽如何计算,云服务器怎么选择带宽

    原标题:云服务器怎么选择带宽 很多企业或站长在购买云服务器时,对带宽不是很了解.他们认为硬件配置高就行,访问速度就会快.其实访问快慢主要是带宽大小来决定,硬件主要是用来运算的,带宽是用来传输数据的.服 ...

  9. 云服务器,Linux上安装xampp,搭建node服务,云服务器Firewalld、iptables,nginx反向代理

    目录 写在前面的 前期准备 下载xampp: xampp安装步骤 1.首先链接远程linux服务器 2.xshell终端执行安装命令 3.启动:xampp服务 4.访问数据库,修改数据库密码 安装守护 ...

  10. 服务器怎么用u盘传文件进去_云服务器无法使用USB设备?一文读懂如何在云服务器上使用优盘...

    操作场景 RemoteFx 是 Windows RDP 桌面协议升级版,RDP 8.0起可以使用 RemoteFx 来使用 USB 重定向,将本地 USB 设备通过 RDP 的数据通道重定向到远程桌面 ...

最新文章

  1. 单选按钮组 事件的实现
  2. mysql with ties_MySQL令人咋舌的隐式转换
  3. 星空主题设计理念_敏捷协调,智慧运营:金蝶云·星空的产品设计理念与应用实践...
  4. MYSQL描述选课系统的问题与_mysql+php实现选课系统中遇到的问题及解决方法
  5. python面向对象编程指南 脚本之家_python对象及面向对象技术详解
  6. .NET IO 复习中的误区
  7. PreScan Regenerate问题
  8. sqlplus使用教程
  9. 深入浅出人脸识别原理
  10. Python数据分析基础(2)
  11. 计算机课程word教学,浅谈计算机Word表格的制作课程教学
  12. 毒你没商量!DOC病毒原理完全解析(转)
  13. Stream流和Optional
  14. 如何设置谷歌浏览器在新窗口中打开链接
  15. 自定义控件详解(二):Path类 相关用法
  16. mysql 使用if函数实现多条件动态查询
  17. JAVA项目实战过程中踩坑总结一
  18. 万邦淘宝优惠券查询 API 返回值说明
  19. 解决WES 7 中Composite Bus找不到驱动的bug
  20. VisualStudio2022 MFC(C++)生成指定bat及内容,并实现无痕执行

热门文章

  1. 大航海时代4+伙伴加入条件和港口一览
  2. 数据库系统概念第七版(Database System concepts 7th)课后答案英文版答案
  3. 那些值得推荐的Superbrowser跨境工具
  4. 爬虫学习5-JSON 数据的分析与解析
  5. 转--《煮酒探西游》吴闲云
  6. 网站做渗透测试服务的步骤
  7. 科技文献检索课题 计算机,科技文献检索课题.doc
  8. #入坑keychron# 简单说说K3的使用体验
  9. php root进程保存文件夹,thinkphp5日志文件夹及文件权限问题的解决
  10. c语言车牌号5位数,为何有的车牌是五位数字,有的加英文字母?终于知道原因了!...