首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS +压缩-webpack-plugin (gzip) -对源代码的“脚本”加载失败

IIS +压缩-webpack-plugin (gzip) -对源代码的“脚本”加载失败
EN

Stack Overflow用户
提问于 2018-11-30 12:57:16
回答 1查看 945关注 0票数 6

在我的compression-webpack-plugin MVC 5项目中,我使用ASP.NET将javascript文件压缩成gz格式。

具有webpack.config.js设置的compression-webpack-plugin的一部分:

代码语言:javascript
复制
const CompressionPlugin = require('compression-webpack-plugin');

module.exports = {
//...
  plugins: [
  //...
    new CompressionPlugin({
      test: /\.(js|css)$/,
      filename: '[path].gz[query]',
      algorithm: 'gzip',
      deleteOriginalAssets: true
    }),
  ],
//...
};

它很好用:

下一步是在IIS中启用GZIP压缩,所以首先我要确保在Windows功能中有必要的特性

..。并在IIS中直接对我的应用程序进行压缩,如下图所示。

此外,我还将这段代码添加到我的Web.config

代码语言:javascript
复制
<system.webServer>
   <urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>

生成脚本后,web浏览器不会加载脚本--我对控制台中的每个脚本文件都有警告:

源“http://192.168.100.100:8088/Scripts/dist/runtime.7b9bc97b36a783fd7495.js”的“脚本”加载失败。

我做错了什么?我应该在我的后端设置其他的东西吗?请注意,我包含了带有.js扩展的脚本,而不是.js.gz --这是错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 11:48:30

好的,终于,经过深入的研究,我找到了一个解决办法。

  1. 为项目禁用IIS中的动态和静态压缩(因为我已经压缩了文件,所以不要使用CPU!)

  1. 从这里下载并安装IIS的URL重写模块:https://www.iis.net/downloads/microsoft/url-rewrite
  2. 从下面的Web.config中删除(如果仍然存在):

<urlCompression doStaticCompression="true" doDynamicCompression="true" />

  1. 将以下代码添加到Web.config中:

代码语言:javascript
复制
<system.webServer>
<staticContent>
  <remove fileExtension=".js.gz" />
  <remove fileExtension=".css.gz" />
  <remove fileExtension=".png.gz" />
  <remove fileExtension=".jpg.gz" />
  <remove fileExtension=".gif.gz" />
  <remove fileExtension=".svg.gz" />
  <remove fileExtension=".html.gz" />
  <remove fileExtension=".json.gz" />
  <mimeMap fileExtension=".js.gz" mimeType="application/javascript" />
  <mimeMap fileExtension=".css.gz" mimeType="text/css" />
  <mimeMap fileExtension=".png.gz" mimeType="image/png" />
  <mimeMap fileExtension=".jpg.gz" mimeType="image/jpeg" />
  <mimeMap fileExtension=".gif.gz" mimeType="image/gif" />
  <mimeMap fileExtension=".svg.gz" mimeType="image/svg+xml" />
  <mimeMap fileExtension=".html.gz" mimeType="text/html" />
  <mimeMap fileExtension=".json.gz" mimeType="application/json" />
</staticContent>

<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>
  </system.webServer>

  1. 确保您在IIS中的MIME类型中有.gz:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53558063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档