ToB企服应用市场:ToB评测及商务社交产业平台

标题: 01-CompressionWebpackPlugin---提高 Web 应用性能的利器 [打印本页]

作者: 用多少眼泪才能让你相信    时间: 2024-8-20 01:08
标题: 01-CompressionWebpackPlugin---提高 Web 应用性能的利器
CompressionWebpackPlugin—提高 Web 应用性能的利器

条记+分享
在现代 Web 开发中,优化资源加载速率是提拔用户体验的告急环节。减少文件大小可以显著提拔网页加载速率,从而改善用户体验。CompressionWebpackPlugin 是一个强盛的 Webpack 插件,它可以在构建过程中主动压缩资源文件,为欣赏器提供更小的文件。本文将具体介绍 CompressionWebpackPlugin 的功能、配置和使用方法,帮助你优化 Web 应用的性能。
什么是 CompressionWebpackPlugin?

CompressionWebpackPlugin 是一个用于 Webpack 的插件,能够在构建过程中生成压缩文件(比方 .gz 和 .br 文件)。这些压缩文件可以显著减少资源文件的大小,从而加速网页的加载速率。欣赏器会优先请求这些压缩文件,减少传输数据量,提高页面相应速率。
为什么选择 CompressionWebpackPlugin?

安装 CompressionWebpackPlugin

起首,在项目中安装 compression-webpack-plugin:
  1. npm install compression-webpack-plugin --save-dev
复制代码
配置 Webpack

在 webpack.config.js 文件中配置 CompressionWebpackPlugin。以下是一个简朴的示例:
  1. const CompressionWebpackPlugin = require('compression-webpack-plugin');
  2. module.exports = {
  3.     mode: 'production',
  4.     plugins: [
  5.         new CompressionWebpackPlugin({
  6.             filename: '[path][base].gz', // 输出文件名
  7.             algorithm: 'gzip', // 压缩算法
  8.             test: /\.(js|css|html|svg)$/, // 匹配需要压缩的文件类型
  9.             threshold: 10240, // 只处理大于 10KB 的文件
  10.             minRatio: 0.8, // 只有压缩率小于 0.8 的文件才会被处理
  11.             deleteOriginalAssets: false, // 是否删除原始文件
  12.         }),
  13.     ],
  14. };
复制代码
具体配置选项

CompressionWebpackPlugin 提供了丰富的配置选项,可以根据具体需求举行调整。以下是一些常用配置:

以下是一个更为复杂的配置示例,使用了 gzip 和 brotli 两种压缩算法:
  1. const CompressionWebpackPlugin = require('compression-webpack-plugin');
  2. const zlib = require('zlib');
  3. module.exports = {
  4.     mode: 'production',
  5.     plugins: [
  6.         new CompressionWebpackPlugin({
  7.             filename: '[path][base].gz',
  8.             algorithm: 'gzip',
  9.             test: /\.(js|css|html|svg)$/,
  10.             threshold: 10240,
  11.             minRatio: 0.8,
  12.             deleteOriginalAssets: false,
  13.         }),
  14.         new CompressionWebpackPlugin({
  15.             filename: '[path][base].br',
  16.             algorithm: 'brotliCompress',
  17.             test: /\.(js|css|html|svg)$/,
  18.             compressionOptions: {
  19.                 params: {
  20.                     [zlib.constants.BROTLI_PARAM_QUALITY]: 11, // brotli 压缩质量
  21.                 },
  22.             },
  23.             threshold: 10240,
  24.             minRatio: 0.8,
  25.             deleteOriginalAssets: false,
  26.         }),
  27.     ],
  28. };
复制代码
配置服务器

为了让欣赏器能够正确请求到压缩后的文件,你必要在服务器上举行相应的配置。以下是 Nginx 和 Apache 的配置示例:
Nginx 配置

  1. http {
  2.     gzip on;
  3.     gzip_types text/plain application/xml text/css text/javascript application/javascript application/x-javascript;
  4.     server {
  5.         listen 80;
  6.         server_name your_domain.com;
  7.         location / {
  8.             try_files $uri $uri/ /index.html;
  9.         }
  10.         location ~* \.(js|css|html|svg)$ {
  11.             gzip_static on; # 启用静态 gzip 文件支持
  12.             expires max;
  13.             add_header Cache-Control public;
  14.             add_header Content-Encoding gzip;
  15.         }
  16.         location ~* \.br$ {
  17.             add_header Content-Encoding br;
  18.             expires max;
  19.         }
  20.     }
  21. }
复制代码
Apache 配置

  1. <IfModule mod_deflate.c>
  2.     AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css text/javascript application/javascript application/x-javascript
  3. </IfModule>
  4. <IfModule mod_headers.c>
  5.     <FilesMatch "\.(js|css|html|svg)$">
  6.         Header set Content-Encoding gzip
  7.     </FilesMatch>
  8.     <FilesMatch "\.br$">
  9.         Header set Content-Encoding br
  10.     </FilesMatch>
  11. </IfModule>
  12. <IfModule mod_rewrite.c>
  13.     RewriteEngine on
  14.     RewriteCond %{HTTP:Accept-Encoding} gzip
  15.     RewriteCond %{REQUEST_FILENAME}\.gz -s
  16.     RewriteRule ^(.*)\.(js|css|html|svg)$ $1\.$2\.gz [QSA]
  17.     RewriteCond %{HTTP:Accept-Encoding} br
  18.     RewriteCond %{REQUEST_FILENAME}\.br -s
  19.     RewriteRule ^(.*)\.(js|css|html|svg)$ $1\.$2\.br [QSA]
  20. </IfModule>
  21. <IfModule mod_mime.c>
  22.     AddEncoding gzip .gz
  23.     AddEncoding br .br
  24. </IfModule>
复制代码
验证压缩结果

使用 CompressionWebpackPlugin 后,你可以通过以下方法验证压缩结果:
总结

CompressionWebpackPlugin 是一个强盛且易于使用的 Webpack 插件,可以显著减少资源文件的大小,提高网页加载速率。通过公道配置 CompressionWebpackPlugin,并在服务器上举行相应的配置,你可以大幅提拔 Web 应用的性能和用户体验。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4