我正在使用Angular 2最新的CLI来捆绑和构建应用程序。
因此,CLI生成“main.bundle.js.gz”文件,我想在IIS服务器上托管该文件。
我不确定如何配置IIS来提供压缩内容。
当我手动将“index.html”文件更改为指向“.gz”文件时,它不起作用。有没有人在IIS上尝试过,可以提供一些线索如何配置它以使其工作。
我知道IIS已经建立了压缩支持,但我不想使用它。我想通过Angular CLI提供已经压缩的文件。
任何帮助都会得到满足。
答案 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