webpack 如何防止第三方应用程序,如互联网下载管理器下载预gzip文件?

bsxbgnwa  于 12个月前  发布在  Webpack
关注(0)|答案(2)|浏览(125)

我需要将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文件正常工作?

3xiyfsfu

3xiyfsfu1#

我认为你正在发出一个错误的请求,你应该向vendor.js发出请求,而不是vendor.js.gz(可能在你的HTML中)。我从来没有使用过IIS,但是服务器应该以这样的方式配置,如果它得到请求头Accept-Encoding: gzip,那么它会传递带有Content-Type: gzip响应头的gzip文件。
例如,如果您查看StackOverflow请求,它会获取一些具有Content-Type: gzip响应头的.js文件。这告诉浏览器内容应该首先被解压缩。

正如你在图片中看到的,这只是一个对.js文件的请求。

hkmswyz6

hkmswyz62#

以下步骤可能有所帮助:
1.在Internet Download Manager中,打开选项;
1.选择文件类型;
1.您可以编辑文件类型(例如,GZ,GZIP)或编辑不自动开始下载的网站列表

相关问题