Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 如何设置;内容编码“;为网页包服务器启用gzip文件_Webpack_Gzip_Server Configuration - Fatal编程技术网

Webpack 如何设置;内容编码“;为网页包服务器启用gzip文件

Webpack 如何设置;内容编码“;为网页包服务器启用gzip文件,webpack,gzip,server-configuration,Webpack,Gzip,Server Configuration,我已经使用网页服务器创建了一个angular universal应用程序。我使用了“压缩网页包插件””来压缩我的js/html文件,这样我就可以从服务器向浏览器提供这些文件。通过该插件可以正确创建压缩文件 问题是: 虽然浏览器显示它可以接受gzip或deflate文件(接受编码:gzip,deflate,sdch),但我的网页包服务器没有将gzip文件发送到浏览器 如何配置我的webpack服务器,使其在浏览器调用时向浏览器发送gzip文件 TIA这是我的网页包和express服务器设置: //

我已经使用网页服务器创建了一个angular universal应用程序。我使用了“压缩网页包插件””来压缩我的js/html文件,这样我就可以从服务器向浏览器提供这些文件。通过该插件可以正确创建压缩文件

问题是:

虽然浏览器显示它可以接受gzip或deflate文件(接受编码:gzip,deflate,sdch),但我的网页包服务器没有将gzip文件发送到浏览器

如何配置我的webpack服务器,使其在浏览器调用时向浏览器发送gzip文件


TIA

这是我的网页包和express服务器设置:

//webpack.config.js

plugins: [
  ...
  new CompressionPlugin({   <-- Add this
    asset: "[path].gz[query]",
    algorithm: "gzip",
    test: /\.js$|\.css$|\.html$/,
    threshold: 10240,
    minRatio: 0.8
  })
...
]

艾萨克的回答很有帮助,但我的问题是,我从我使用的样板中得到了以下信息:

// http://expressjs.com/en/starter/static-files.html
app.use(express.static('public'));
当您有以下情况时,您必须将此“路线”放在:

// Must come before the use public folder!!
app.get('*.gz', function(req, res, next) {
  res.set('Content-Encoding', 'gzip');
  res.set('Content-Type', 'text/javascript');
  next();
});

// AFTER Gzip fix
app.use(express.static('public'));
我无法将文件命名为与原始文件相同的名称,因此我将其更改为具有
.gz
(如果您尝试将其命名为与它生成的捆绑包相同的名称,则webpack会发出抱怨,而且在最新的webpack中它似乎不起作用)


您是否使用webpack为生产环境上的文件提供服务?这可能会有帮助:
// Must come before the use public folder!!
app.get('*.gz', function(req, res, next) {
  res.set('Content-Encoding', 'gzip');
  res.set('Content-Type', 'text/javascript');
  next();
});

// AFTER Gzip fix
app.use(express.static('public'));
plugins: [
    new CompressionPlugin({
      filename: '[path].gz[query]',
      algorithm: 'gzip',
      test: /\.js$|\.css$|\.html$|\.eot?.+$|\.ttf?.+$|\.woff?.+$|\.svg?.+$/,
      threshold: 10240,
      minRatio: 0.8
    }),
]