为什么ASP.NET gzip压缩会损坏CSS?

为什么ASP.NET gzip压缩会损坏CSS?

Why is ASP.NET gzip compression corrupting CSS?

我有一个正在使用的ASP.NET Webforms应用程序(3.5 SP1),并试图启用gzip fpr HTML和CSS。 我正在使用此实现(并尝试了其他一些与Application_BeginRequest挂钩的实现),它似乎损坏了页面使用的外部CSS文件,但是间歇性地...突然,所有样式都会在页面刷新时消失,保持原样 一会儿,然后突然又开始工作。

IE7和FF3都表现出此行为。 使用Web开发人员工具栏查看CSS时,它会返回乱码。 缓存控制标头以"私有"的形式出现,但我还不知道这是否是一个促成因素。

另外,它正在ASP.NET开发服务器上运行。 也许对IIS来说还可以,但是我在XP上开发,并且应该是IIS5。


仅仅是损坏的CSS文件吗? JS文件(或任何其他静态文本文件)可以通过吗?

如果直接浏览到CSS文件,也可以复制行为吗?

我仅使用以下方法在Windows 2003服务器的IIS上启用了压缩:

  • IIS→网站→属性→服务选项卡,选中两个框
  • IIS→Web服务扩展→右键单击,添加新

    1
    2
    3
    4
      Name
          Http Compression
      Required Files
          %systemroot%\\system32\\inetsrv\\gzip.dll
  • IIS→右键单击顶部节点,Internet信息服务,选中启用直接元数据库编辑
  • 备份和编辑%systemroot%\\system32\\inetsrv\\MetaBase.xml

  • 查找Location ="/LM/W3SVC/Filters/Compression/gzip"

    • pngcssjs和任何其他静态文件扩展名添加到HcFileExtensions
    • aspx和任何其他可执行扩展名添加到HcScriptFileExtensions
  • 重新启动IIS(运行iisreset)
  • 如果您有Windows 2003/2008服务器,可以尝试使用该方法。


    如果要在IIS 6或IIS 7上进行部署,只需使用内置的IIS压缩。我们正在生产站点上使用它来正确压缩HTML,CSS和JavaScript。它还在服务器上缓存了压缩版本,因此压缩命中仅执行一次。


    推荐阅读