当前位置:   article > 正文

前端性能优化(vite)_vite优化peizhi

vite优化peizhi

vite相对于webpack使用rollup构建,更快

分包策略

默认情况下,浏览器重复请求相同名称的静态资源时,会直接使用缓存的资源。我们可以将不经常更新的代码单独打包成一个js文件,减少http请求,降低服务器压力。

  1. // vite.config.js
  2. import { defineConfig } from 'vite'
  3. export default defineConfig({
  4. build: {
  5. rollupOptions: {
  6. output: {
  7. manualChunks: id {
  8. // 将 node_modules 中的代码单独打包成一个 JS 文件
  9. if(id.includes('node_modules')) {
  10. return 'vendor'
  11. }
  12. }
  13. }
  14. }
  15. }
  16. })

gzip压缩

gzip 是一种使用非常普遍的压缩格式。使用 gzip 压缩可以大幅减小代码体积,提升网络性能。开启 gzip 也比较简单,使用一个插件就可以了

  1. npm i vite-plugin-compression
  2. // vite.config.js
  3. import { defineConfig } from 'vite'
  4. import viteCompression from 'vite-plugin-compression'
  5. export default defineConfig({
  6. plugins: [viteCompression()]
  7. })

完整逻辑是,我们需要把浏览器支持的压缩类型传给服务端,在请求头中设置 accept-encoding: gzip, deflate, br,只不过这一步浏览器通常帮我们都做了。然后服务端根据浏览器支持的类型,设置响应头 content-encoding: gzip ,告诉浏览器以何种方式进行解压。

注意:因为浏览器解压也需要时间,所以代码体积不是很大的话不建议使用 gzip 压缩。

cdn加速

内容分发网络(Content Delivery Network,简称 CDN)就是让用户从最近的服务器请求资源,提升网络请求的响应速度。通常我们请求依赖模块使用 CDN ,而请求项目代码依然使用自己的服务器。

使用 CDN 也比较简单,一个插件就可以搞定:

  1. npm i vite-plugin-cdn-import -D
  2. // vite.config.js
  3. import { defineConfig } from 'vite'
  4. import viteCDNPlugin from 'vite-plugin-cdn-import'
  5. export default defineConfig({
  6. plugins: [
  7. viteCDNPlugin({
  8. // 需要 CDN 加速的模块
  9. modules: [
  10. {
  11. name: 'lodash',
  12. var: '_',
  13. path: `https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js`
  14. }
  15. ]
  16. })
  17. ]
  18. })

图片压缩

根据项目对清晰度的要求,我们可以使用 vite-plugin-imagemin 插件,对图片进行适当压缩:

  1. npm i vite-plugin-imagemin -D
  2. // vite.config.js
  3. import { defineConfig } from 'vite'
  4. import viteImagemin from 'vite-plugin-imagemin'
  5. export default defineConfig({
  6. plugins: [
  7. viteImagemin({
  8. gifsicle: {
  9. optimizationLevel: 7,
  10. interlaced: false
  11. },
  12. optipng: {
  13. optimizationLevel: 7
  14. },
  15. mozjpeg: {
  16. quality: 20
  17. },
  18. pngquant: {
  19. quality: [0.8, 0.9],
  20. speed: 4
  21. },
  22. svgo: {
  23. plugins: [
  24. {
  25. name: 'removeViewBox'
  26. },
  27. {
  28. name: 'removeEmptyAttrs',
  29. active: false
  30. }
  31. ]
  32. }
  33. })
  34. ]
  35. })

不同格式的文件配置也不一样,具体可以参考 github :vite-plugin-imagemin 。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/892155
推荐阅读
相关标签
  

闽ICP备14008679号