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