1_b*_*bug 6 compression iis gzip asp.net-mvc-5 webpack-4
我在 ASP.NET MVC 5 项目中使用compression-webpack-plugin将 javascript 文件压缩为 gz 格式。
\n\n我的webpack.config.js的一部分,带有压缩 webpack-plugin设置:
\n\nconst CompressionPlugin = require(\'compression-webpack-plugin\');\n\nmodule.exports = {\n//...\n plugins: [\n //...\n new CompressionPlugin({\n test: /\\.(js|css)$/,\n filename: \'[path].gz[query]\',\n algorithm: \'gzip\',\n deleteOriginalAssets: true\n }),\n ],\n//...\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n它工作正常:
\n\n\n\n下一步是在 IIS 中启用 GZIP 压缩,因此首先我确保Windows 功能中具有必要的功能:
\n\n\n\n...并直接在 IIS 中为我的应用程序启用压缩,如下图所示。
\n\n\n\n另外,我已将这段代码添加到我的Web.config中:
\n\n<system.webServer>\n <urlCompression doStaticCompression="true" doDynamicCompression="true" />\n</system.webServer>\n
Run Code Online (Sandbox Code Playgroud)\n\n构建脚本后,网络浏览器不会加载 - 我在控制台中收到每个脚本文件的警告:
\n\n\n\n\n源\n \xe2\x80\x9e http://192.168.100.100:8088/Scripts/dist/runtime.7b9bc97b36a783fd7495.js \xe2\x80\x9d的“脚本”加载失败。
\n
我做错了什么?我应该在后端设置其他东西吗?请注意,我包含带有.js扩展名的脚本,而不是.js.gz - 这是一个错误吗?
\n好吧,最后,经过真正深入的搜索,我找到了解决方案。
从此处下载并安装 IIS 的 URL 重写模块: https: //www.iis.net/downloads/microsoft/url-rewrite
从 Web.config 中删除以下行(如果仍然存在):
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1087 次 |
最近记录: |