【问题标题】:Specifying precompressed (gzip) vs non-precompressed content in IIS7 by filetype按文件类型在 IIS7 中指定预压缩 (gzip) 与非预压缩内容
【发布时间】:2012-06-24 01:03:53
【问题描述】:

我正在尝试为一系列嵌套文件夹设置一个 IIS7 内部网 CDN,其中包含一些预压缩 (gzip) css 内容以及图像文件(显然未压缩)。

文件夹结构基本上是这样的:

Skins
Skins\SkinName1\*.css
Skins\SkinName1\Control1\*.png
Skins\SkinName1\Control2\*.png
Skins\SkinName1\lots more controls..\*.png
Skins\SkinName2\...
Skins\lots more skins...\...

..你明白了..

css 都是预压缩的(gzip'ed),所以我需要在它们上设置一个“gzip”的 Content-Encoding 标头。但我显然不能在图像文件上设置相同的标头。

我知道我可以在根目录设置 Content-Encoding gzip 文件夹,然后在所有控制(图像)文件夹上不继承它。但是有大量的图像文件夹需要经过。

有什么方法可以通过文件类型或其他方式来设置,而不必单独浏览每个文件夹?

*很遗憾,我无法控制文件夹结构。

谢谢-

【问题讨论】:

  • 如果客户端出于某种原因不支持gzip,这个方案不会失败吗?
  • @EricLaw 公平点。我想你真的应该考虑在假设之前先检查 Accept-Encoding 标头,但据我记得,我认为几乎所有浏览器都支持它多年。在我的特定场景中,它用于 Intranet CDN,因此我可以放心地假设它是几种不同的企业标准现代浏览器之一。

标签: iis-7 gzip


【解决方案1】:

好的,我终于意识到我应该使用 URL Rewrite 模块并让它添加自定义标头。

我基本上只是用这个:

    <rewrite>
      <outboundRules>
        <rule name="Set custom HTTP response header" enabled="true">
          <match serverVariable="RESPONSE_Content_Encoding" pattern=".*" />
          <conditions>
            <add input="{REQUEST_URI}" pattern="\.css$" />
          </conditions>
          <action type="Rewrite" value="gzip"/>
        </rule> 
      </outboundRules>
    </rewrite>

并让非预压缩的东西默认。

希望对某人有所帮助-

【讨论】:

  • 是的,正是我想要的。我一直在自动压缩或无内容编码之间徘徊了很长时间,这让我有些发疯,然后我发现了这个!
  • 我该把配置放在哪里?
  • 还有,是什么让 IIS 服务器预压缩文件?
猜你喜欢
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
  • 2010-10-21
  • 1970-01-01
相关资源
最近更新 更多