服务器项目访问速度,【随心秀】优化1M带宽的云服务器访问速度
一台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带宽的云服务器访问速度相关推荐
- 1M带宽的云服务器能承受多少访问量
几十元一个月,一百来元包年的云服务器通常在带宽配置上通常都是1M左右,这1M带宽大多都是公网带宽,很多用户在真正使用时又会觉得1M带宽太小,在实际使用中会觉得不够用. 每年在云服务器租用上,1M带宽的 ...
- 1m服务器能做什么网站,1M带宽的云服务器,能做什么?
原标题:1M带宽的云服务器,能做什么? 在购买云服务器时,带宽也是影响价格的因素之一,而有一部分服务商给出的最低价格时,带宽往往只有1M. 那么1M带宽的云服务器,可以同时承受多少在线用户?能不能用最 ...
- 云服务器上传文件怎么这么慢,百度云上传速度慢怎么办?教你如何加快百度云上传速度...
现在有很多朋友使用百度网盘进行资料存储,但是上传和下载的速度却总是有些问题.最近有位朋友的百度网盘下载速度很快,但是上传速度很慢的时候,不知道为什么会这样.那么,这种情况应该如何解决呢?下面就来看一下 ...
- 云服务器主体信息可以变更吗,云服务器备案号是什么?备案号存在能否更换云服务器?...
在云计算时代,云服务器已经逐步取代了传统服务器并得到多数企业的应用,云服务器还是企业转到云端所必需的云服务产品.云服务器备受好评,其优势也不断吸引各种规模企业用户,因此大幅提高了企业上云率. 众所周知 ...
- 腾讯云服务器选购指南!如何选择一款适合自己的云服务器?
如果你是第一次买云服务器,肯定会对云服务器比较陌生.从一些基本概念,到具体购买云服务器的流程,及使用方法都需要简单的了解.本文就针对云服务器的完全新手,来让你轻松入门开始使用云服务器. 云服务器的一些 ...
- 弹性服务器怎么上传文件,上传哪个文件夹弹性云服务器
上传哪个文件夹弹性云服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 本节 ...
- Vue项目从 打包优化 到 上线部署 云服务器的全过程(**教你在云服务器上优化部署自己的项目**)
前言 作为前端开发人员,我们不仅要会写代码,优化打包,上线部署也是一个前端工程师必备的技能,这篇文章就教大家从零开始,把一个完整项目打包发布到线上服务器.首先的准备工作就是需要一台云服务器. 项目打包 ...
- 云服务器带宽如何计算,云服务器怎么选择带宽
原标题:云服务器怎么选择带宽 很多企业或站长在购买云服务器时,对带宽不是很了解.他们认为硬件配置高就行,访问速度就会快.其实访问快慢主要是带宽大小来决定,硬件主要是用来运算的,带宽是用来传输数据的.服 ...
- 云服务器,Linux上安装xampp,搭建node服务,云服务器Firewalld、iptables,nginx反向代理
目录 写在前面的 前期准备 下载xampp: xampp安装步骤 1.首先链接远程linux服务器 2.xshell终端执行安装命令 3.启动:xampp服务 4.访问数据库,修改数据库密码 安装守护 ...
- 服务器怎么用u盘传文件进去_云服务器无法使用USB设备?一文读懂如何在云服务器上使用优盘...
操作场景 RemoteFx 是 Windows RDP 桌面协议升级版,RDP 8.0起可以使用 RemoteFx 来使用 USB 重定向,将本地 USB 设备通过 RDP 的数据通道重定向到远程桌面 ...
最新文章
- 单选按钮组 事件的实现
- mysql with ties_MySQL令人咋舌的隐式转换
- 星空主题设计理念_敏捷协调,智慧运营:金蝶云·星空的产品设计理念与应用实践...
- MYSQL描述选课系统的问题与_mysql+php实现选课系统中遇到的问题及解决方法
- python面向对象编程指南 脚本之家_python对象及面向对象技术详解
- .NET IO 复习中的误区
- PreScan Regenerate问题
- sqlplus使用教程
- 深入浅出人脸识别原理
- Python数据分析基础(2)
- 计算机课程word教学,浅谈计算机Word表格的制作课程教学
- 毒你没商量!DOC病毒原理完全解析(转)
- Stream流和Optional
- 如何设置谷歌浏览器在新窗口中打开链接
- 自定义控件详解(二):Path类 相关用法
- mysql 使用if函数实现多条件动态查询
- JAVA项目实战过程中踩坑总结一
- 万邦淘宝优惠券查询 API 返回值说明
- 解决WES 7 中Composite Bus找不到驱动的bug
- VisualStudio2022 MFC(C++)生成指定bat及内容,并实现无痕执行
热门文章
- 大航海时代4+伙伴加入条件和港口一览
- 数据库系统概念第七版(Database System concepts 7th)课后答案英文版答案
- 那些值得推荐的Superbrowser跨境工具
- 爬虫学习5-JSON 数据的分析与解析
- 转--《煮酒探西游》吴闲云
- 网站做渗透测试服务的步骤
- 科技文献检索课题 计算机,科技文献检索课题.doc
- #入坑keychron# 简单说说K3的使用体验
- php root进程保存文件夹,thinkphp5日志文件夹及文件权限问题的解决
- c语言车牌号5位数,为何有的车牌是五位数字,有的加英文字母?终于知道原因了!...