vue项目打包优化:缩小体积productionSourceMap设置,使用cdn加速

文章目录

一、vue项目打包体积大优化之productionSourceMap设置

1、productionSourceMap 的作用

productionSourceMap 在构建时生成完整的 SourceMap 文件,默认情况下开启。生产环境中启用 productionSourceMap 有助于开发者调试代码,可以在浏览器的调试工具中查看到源文件中错误的代码位置,而不是编译后的代码位置。这对于定位线上问题十分有帮助。

然而,开启 productionSourceMap 会使得构建后的代码包含源代码映射关系,导致构建后的代码文件体积增大。体积增加会影响页面加载速度,而且源代码也存在泄漏的风险,因此有些开发者会选择在生产环境中禁用 productionSourceMap。

我们在执行 npm run build 生成线上文件的时候,其实调用了 vue-cli-service build

productionSourceMap的作用在于定位问题,打包时会生成.map文件,在生产环境就可以在浏览器查看到输出的信息具体是在哪一行,但相应的包的体积也会变大,将其设置为false则不生成.map文件。

2、禁用 productionSourceMap

禁用 productionSourceMap 后,会对静态资源的定位产生影响,需要手动配置 webpack.

要想引入其它静态资源(比如图片、字体等),需要将资源放到静态资源目录(static)下,然后使用相对路径引用即可。或者使用 require 和 import 引入的静态资源,也可以通过相对路径来引入。

自己的项目在开启productionSourceMap是打包后dist目录文件大小,约为20M左右。

3、关闭 productionSourceMap
module.exports = defineConfig({
  productionSourceMap: false,
})

优化后,打包后dist目录文件大小,约为6M左右。一下子减少14MB。

4、配置 productionSourceMap

在 Vue 项目中,可以运用环境变量来控制生产环境下是否启用 productionSourceMap 属性。还是在 configureWebpack 中,可以使用 对象来获取环境变量

module.exports = defineConfig({
  productionSourceMap: process.env.VUE_APP_MODE === 'development'?true:false,
})

通过环境变量process.env来自动设置,开发环境开启,生产环境关闭。

二、vue-cli打包之性能优化-使用cdn加速

1、CDN加速是什么

CDN加速是一种网络优化技术,旨在加速网站和应用程序的内容传输和交付给用户。它通过在全球各地分布的服务器网络上存储网站、应用程序和媒体文件的副本来实现加速效果。当用户请求访问某个网站或应用程序时,CDN会根据用户的地理位置和网络条件,将内容从离用户最近的服务器上提供,从而减少了延迟和加载时间。

2、CDN加速具有以下优点:
  • 降低延迟:CDN将内容存储在全球多个位置,使用户能够从距离更近的服务器获取内容,从而降低了数据传输的延迟时间。
  • 提高性能:通过减少网络拥塞和加速内容交付,CDN可以显著提高网站和应用程序的性能,使其更快加载。
  • 负载均衡:CDN可以自动将流量分配到不同的服务器上,从而降低单个服务器的负载,确保高可用性和稳定性。
  • 减少服务器负担:由于CDN服务器负责处理大部分用户请求,源服务器的负载相对较低,可以减少源服务器的压力,提高其响应速度。
  • 提高安全性:一些CDN提供商还提供安全性功能,如DDoS攻击防护和安全证书,以增强网站和应用程序的安全性。
  • 节省带宽成本:由于CDN可以缓存和压缩内容,因此可以降低源服务器的带宽使用,从而节省带宽成本。

CDN加速在今天的互联网应用中扮演着重要的角色,特别是对于需要快速加载内容的网站、应用程序和流媒体服务来说,它可以提供更好的用户体验并帮助提高业务的性能。许多互联网公司和内容提供商都使用CDN来优化其在线服务。

3、vue.config.js配置
const { defineConfig } = require('@vue/cli-service')
let externals = {}
let cdn = {
  css: [],
  js: []
}
const isProduction = process.env.NODE_ENV === 'production' // 判断是否是生产环境
if (isProduction) {
  externals = {
      'vue': 'Vue',
      'element-ui': 'ELEMENT',
      'vuex': 'Vuex',
      'axios': 'axios',
    },
    cdn = {
      css: ['https://unpkg.com/element-ui/lib/theme-chalk/index.css'],
      js: ['https://unpkg.com/vue@2.6.12/dist/vue.js',
        'https://unpkg.com/element-ui/lib/index.js',
        'https://cdn.bootcdn.net/ajax/libs/vuex/4.0.2/vuex.cjs.min.js',
        'https://cdn.bootcdn.net/ajax/libs/axios/0.26.1/axios.js'
      ],
    }
}
module.exports = defineConfig({
  transpileDependencies: true,
  configureWebpack: {
    externals, // 采用cdn的方式,所以将以下这些文件配置不打包
  },
  chainWebpack(config) {
    // 注入cdn
    config.plugin("html").tap(args => {
      args[0].cdn = cdn
      return args
    })
  }
})
4、index.html配置
<head>
<!-- 使用CDN的CSS文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
  <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %> " rel="stylesheet">
<% } %>
</head>

<body>
<!-- 使用CDN的JS文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>" defer></script>
<% } %>
</body>
相关推荐
互联网哪些事情6 天前
个人搭建CDN加速服务 特网科技
cdn·cdn加速·特网科技
诺必达云服务4 个月前
如何通过CDN加速提升电商网站双十一购物节用户体验
cdn·cdn加速
Ogcloud天耘科技5 个月前
CDN加速是什么?CDN加速的原理是什么?
cdn·cdn加速·企业组网·组网·网络加速·cdn网络加速
Vgbire6 个月前
我把前端部署用户提醒做成了一个npm包
前端·webpack·性能优化·npm·vite·打包优化·webpack优化
TIANGEKUAJING8 个月前
如何通过 CDN 优化网站加载速度
网络·cdn·cdn加速·企业组网
范特西是只猫9 个月前
解决vite打包只生成了一个css和js文件问题
前端·vite·打包优化·路由懒加载
Amd7949 个月前
Django 静态文件管理与部署指南
webpack·cdn加速·secstatic·cicd-tools·staticdeploy·djangocompress·webopt
火伞云2 年前
流媒体内容分发终极解决方案:当融合CDN与P2P视频交付结合
服务器·p2p·cdn·cdn加速