我需要将react项目压缩为gzip
文件,以便在生产模式下获得更好的性能。所以我用compression-webpack-plugin
压缩了我的react文件,和下面的webpack.config
一样:
plugins: [
new CompressionPlugin({
algorithm: 'gzip',
test: /\.(js)$|\.(css)$|\.(html)$|\.eot?.+$|\.ttf?.+$|\.woff?.+$|\.svg?.+$/,
})
],
下面是输出文件夹:
我使用URL重写器在服务器上加载pre-gzip
文件,而不是在web.config
上加载原始js
文件:
<rewrite>
<outboundRules rewriteBeforeCache="true">
<rule name="Custom gzip file header">
<match serverVariable="RESPONSE_CONTENT_ENCODING" pattern=".*" />
<conditions>
<add input="{REQUEST_URI}" pattern="\.gz$" />
</conditions>
<action type="Rewrite" value="gzip"/>
</rule>
</outboundRules>
<rules>
<rule name="Rewrite gzip file">
<match url="(.*)"/>
<conditions>
<add input="{HTTP_ACCEPT_ENCODING}" pattern="gzip" />
<add input="{REQUEST_FILENAME}.gz" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="{R:1}.gz" />
</rule>
</rules>
</rewrite>
另外,我已经在我的操作系统上安装了Internet Download Manager。我的问题是,互联网下载管理器,gz
文件下载器,导致网站需要修复!这是一个问题的图片:
如何才能不让第三方应用程序(如Internet Download Manager)在从服务器发送的响应和希望接收它的客户端之间停留,并且gzip
文件正常工作?
2条答案
按热度按时间3xiyfsfu1#
我认为你正在发出一个错误的请求,你应该向
vendor.js
发出请求,而不是vendor.js.gz
(可能在你的HTML中)。我从来没有使用过IIS,但是服务器应该以这样的方式配置,如果它得到请求头Accept-Encoding: gzip
,那么它会传递带有Content-Type: gzip
响应头的gzip文件。例如,如果您查看StackOverflow请求,它会获取一些具有
Content-Type: gzip
响应头的.js
文件。这告诉浏览器内容应该首先被解压缩。正如你在图片中看到的,这只是一个对
.js
文件的请求。hkmswyz62#
以下步骤可能有所帮助:
1.在Internet Download Manager中,打开选项;
1.选择文件类型;
1.您可以编辑文件类型(例如,GZ,GZIP)或编辑不自动开始下载的网站列表