2016-11-30 7 views
4

最新のAngular 2 CLIを使用して、アプリケーションをバンドルしてビルドしています。IIS上でbundle.js.gzファイルを配信

この結果、CLIはIISサーバーでホストする "main.bundle.js.gz"ファイルを生成します。

ZIP形式のコンテンツを提供するようにIISを構成する方法がわかりません。

"index.html"ファイルを手動で ".gz"ファイルを指すように変更すると動作しません。誰でもIIS上でそれを試して、それを動作させるためにどのように構成するかを手がかりにすることができました。

IISに圧縮サポートが組み込まれていることは知っていますが、私はそれを使用したくありません。私はAngular CLIで既にzipファイルを提供したいと思います。

助けが必要です。

答えて

1

共有設定IISで事前圧縮された静的コンテンツを提供するようになりました。

ng2プロジェクトをビルドしたら、* .gzファイルなどでdistディレクトリを作成します。 「gz」ディレクトリを作成し、* .gzファイルをそのディレクトリに移動します。

Web.configを変更します。 gzディレクトリの "location"要素を追加します。ここでは組み込みのIIS圧縮を無効にするため、IISはあらかじめ圧縮されたファイルを2度目に圧縮しません(二重圧縮)。 gzipのコンテンツを提供していることを理解するために、ヘッダー "content-encoding: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ファイル拡張子です。 content-typeをapplication/javascriptとして定義する必要があります。グローバルsystem.webServerに追加>静的コンテンツ:

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

最終ステップ。編集のindex.htmlと "GZ/main.xxx.bundle.js.gz" に

完全なweb.configの例をメインスクリプトのパスを変更https://gist.github.com/suhrab/552af7b3383706081fbe51c102c290d7

END。

アドバイス。プロダクション用のangle-cliは一意の名前(ハッシュ)を持つファイルを生成するので、私にとっては "main.0b55c0ac894d24f40217.bundle.js.gz"です。キャッシュコントロールヘッダーを追加して期限切れにならないようにすることができます。 https://www.iis.net/configreference/system.webserver/staticcontent/clientcache

+0

遅延読み込みモジュールがロードされていないため、* .gzエクステンションなしでロードしようとしています。 – Helzgate

関連する問題