Angular的PRE-Gzipped文件不能通过IIS提供?

Roy*_*mir 13 javascript iis gzip angular

我准备了所有设置(在我家,Windows 10)来创建和js作为gz文件,但仍然 - 我只获得常规js文件(原始大小).

组态

- Angular的webpack文件:

new CompressionPlugin({
      asset: "[path].gz[query]",
     algorithm: "gzip",
     test: /\.js$|\.css$|\.html$/,
     threshold: 10240,
     minRatio: 0.8
 })
Run Code Online (Sandbox Code Playgroud)

- 该配置的输出文件:

在此输入图像描述

- Index.html文件:

...
<body>
  <app-root>Loading...</app-root> 
  <script src="/dist/polyfills.bundle.js"></script>
  <script src="/dist/main.bundle.js"></script>
</body>
...
Run Code Online (Sandbox Code Playgroud)

诊断

当我导航到http://kkk.com/index.html,我得到完整大小的文件:

在此输入图像描述

另外 - 查看请求标头,我发送Accept-Encoding:gzip, deflate 标头:

在此输入图像描述

为什么不提供GZ文件?


附加信息 :

  • 我设置了没有304回复 在此输入图像描述.
  • 在我的工作中,Windows 7,相同的文件 - 我做(!)看到gziped文件:

在此输入图像描述

  • 禁用防病毒
  • 权限:所有人:完全控制文件的文件夹.
  • 请求标头之间的比较:

在此输入图像描述

  • 因为我不想实时压缩,但是PRE-ZIPPING(已经被角度gzip压缩的文件) - 我尝试启用AND禁用压缩(只是为了看它是否会影响某些东西 - 但它没有 - 我仍然得到大文件):

在此输入图像描述

Roy*_*mir 5

好.经过大量搜索 - 我已经设法URLREWRITE用一些IIS配置来完成它.

首先 - 我禁用了这个:

在此输入图像描述

因为我这里不需要CPU.我已经有了预压缩文件.

好的 - 这里的关键是这两个部分:

1)设置contentType to application/javascript
2)设置contentEncoding为gzip.

所以我写了这两条 urlrewrite规则:

第一部分是将所有js文件重写为js.gz,第二部分outboundrule是用于添加content encoding带有gzip值的标题.

这是配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="https" enabled="true" stopProcessing="false">
                    <match url="(.*).js" />
                    <conditions></conditions>
                    <action type="Rewrite" url="{R:1}.js.gz" appendQueryString="true" logRewrittenUrl="true" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="Rewrite content-encoding header" preCondition="IsGZ" stopProcessing="false">
                    <match serverVariable="RESPONSE_CONTENT_ENCODING" pattern=".*" />
                    <action type="Rewrite" value="gzip" />
                </rule>
                <preConditions>
                    <preCondition name="IsGZ">
                        <add input="{URL}" pattern="\.gz$" />
                    </preCondition>


        </preConditions>
        </outboundRules>
    </rewrite>
    <urlCompression doStaticCompression="false" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

只需将其粘贴到web.config文件中即使您不使用Asp.net也是如此.

另外 - 你必须将它添加到mime类型:

在此输入图像描述

现在,正如您所看到的那样,我确实得到了正确的大小:

在此输入图像描述

更深入:

在此输入图像描述

这是我预先设定的那个:

在此输入图像描述

就这样.