在IIS上提供bundle.js.gz文件

时间:2016-11-30 09:09:34

标签: angular iis angular-cli

我正在使用Angular 2最新的CLI来捆绑和构建应用程序。

因此,CLI生成“main.bundle.js.gz”文件,我想在IIS服务器上托管该文件。

我不确定如何配置IIS来提供压缩内容。

当我手动将“index.html”文件更改为指向“.gz”文件时,它不起作用。有没有人在IIS上尝试过,可以提供一些线索如何配置它以使其工作。

我知道IIS已经建立了压缩支持,但我不想使用它。我想通过Angular CLI提供已经压缩的文件。

任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:3)

共享配置我开始在IIS中提供预压缩的静态内容。

在构建你的ng2项目之后,你有了* .gz文件和其他文件。创建" gz" dir并将* .gz文件移入其中。

对Web.config进行更改。 添加"位置" gz目录的元素。这里我们禁用内置的IIS压缩,因此IIS不会第二次压缩我们的预压缩文件(双压缩)。添加标题"内容编码:gzip"浏览器了解我们正在提供gzip压缩内容。

<location path="gz">
    <system.webServer>
        <urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" />
        <httpProtocol>
            <customHeaders>
                <add name="content-encoding" value="gzip" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</location>

接下来是我们的自定义* .js.gz文件扩展名。我们必须将其内容类型定义为application / javascript。添加到全球system.webServer&gt; staticContent:

<mimeMap fileExtension=".js.gz" mimeType="application/javascript" />

最后一步。编辑index.html并将主脚本路径更改为&#34; gz / main.xxx.bundle.js.gz&#34;

完成Web.config示例https://gist.github.com/suhrab/552af7b3383706081fbe51c102c290d7

END。

建议。因为用于生产的angular-cli会生成具有唯一名称(哈希)的文件,对我来说它是&#34; main.0b55c0ac894d24f40217.bundle.js.gz&#34;,您可以添加缓存控制标头永不过期。 https://www.iis.net/configreference/system.webserver/staticcontent/clientcache