我正在使用webpack的压缩插件来gzip文件的内容(html,js),然后我发布了gzip文件,将扩展名.gz删除到服务器(AWS / Nginx / Apache)。
webpack配置的压缩插件:
new CompressionPlugin({
'asset': "[path]",
'algorithm': "gzip",
'test': /\.js$|\.css$|\.html$/,
'threshold': 10240,
'minRatio': 0.8
})
我尝试过AWS,Nginx和Apache。在AWS上,我必须在上传文件后明确设置内容编码元数据。
在Nginx上有一个更简单的解决方案 - http_gzip_static_module。
location / {
gzip_static on;
rewrite ^/?$ /index.html break;
root /srv/app;
}
通过将gzip_static设置为Nginx服务器,它可以提供正确的Content-Type和Content-Encoding传递给客户端。
所以在AWS和Nginx上都运行正常,我试图在apache服务器上实现相同的功能,但它会导致gzip文件中出现意外的令牌。
调试之后,我开始理解gzip压缩的文件没有内容编码:gzip作为元数据标签,导致浏览器失败的请求。
我想了解webpack压缩插件或webpack中是否有任何方法可以显式添加文件元数据?或任何其他方式我可以处理这个问题。