Я только что установил и настроил сжатие gzip для моего веб-пакета и файлов экспресса.Фрагмент плагина моего webpack.config.js теперь выглядит следующим образом:
plugins: [
new webpack.DefinePlugin({ // <-- key to reducing React's size
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.UglifyJsPlugin(), //minify everything
new webpack.optimize.AggressiveMergingPlugin(),//Merge chunks
new CompressionPlugin({
asset: "[path].gz[query]",
algorithm: "gzip",
test: /\.js$|\.css$|\.html$/,
threshold: 10240,
minRatio: 0.8
}),
HTMLWebpackPluginConfig,
new Dotenv({
path: './.env', // Path to .env file (this is the default)
systemvars: true //
})]
};
, а фрагмент из моего файла server.js теперь выглядит так:
// Use our router configuration when we call /
if (process.env.NODE_ENV === 'production') {
app.use(express.static('dist'), router);
app.get('/*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'dist', 'index.html'));
});
app.get('/*.js', (req, res) => {
req.url = req.url + '.gz';
res.set('Content-Encoding', 'gzip');
});
} else {
app.use('/', router);
}
При развертыванииприложение к работе. Я вижу код, который фактически собрал два файла: index_bundle.js и index_bundle.js.gz здесь:
remote: index_bundle.js 1.49 MB 0 [emitted] [big] main
remote: index_bundle.js.gz 375 kB [emitted] [big]
remote: index.html 3.88 kB [emitted]
Сжатие успешно, однако, когда я тестирую свой веб-сайтиспользуя консоль chrome, он по-прежнему передает файл index_bundle.js через сеть, а не через новый сжатый файл:
Любые идеи о том, почему этопроисходит?