2008-08-22 84 views
9

我有一个正在处理的ASP.NET webforms应用程序(3.5 SP1),并尝试启用管道中的gzip fpr HTML和CSS。我正在使用this implementation(并尝试了一些挂钩到Application_BeginRequest的其他项),并且它似乎正在破坏页面使用的外部CSS文件,但是间歇性地...突然,所有样式都会在页面刷新中消失,保持这种状态一会儿,然后突然又开始工作了。为什么ASP.NET gzip压缩会破坏CSS?

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

此外,这是在ASP.NET开发服务器上运行。也许这对IIS很好,但我正在开发XP,它会是IIS5。

回答

5

是否只有CSS文件被损坏? JS文件(或任何其他静态文本文件)通过了吗?

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

我一直在使用这种方法只启用压缩在Windows 2003服务器的IIS:

  1. IIS→Web站点→属性→服务选项卡,选中这两个框
  2. IIS→Web服务扩展→单击鼠标右键,添加新
     
        Name 
         Http Compression 
        Required Files 
         %systemroot%\system32\inetsrv\gzip.dll
  3. IIS→右击顶级节点,互联网信息服务,检查启用直接元数据库编辑
  4. 备份和编辑%systemroot%\system32\inetsrv\MetaBase.xml
    1. 查找Location ="/LM/W3SVC/Filters/Compression/gzip"
      • 添加pngcssjs和任何其他静态文件扩展名HcFileExtensions
      • 添加aspx和任何其他可执行文件扩展HcScriptFileExtensions
      • 保存
  5. 重新启动IIS(运行iisreset

如果您有Windows 2003/2008服务器与您一起玩,可以试试这种方法。

+1

IE7/8正在下载损坏的zip文件,而Firefox/Chrome/Opera没有。这似乎是因为IIS6是gzip压缩zip文件,这会使IE不高兴。您的解决方案解决了我的问题,IIS不再尝试重新压缩压缩文件。 – 2009-05-16 16:39:52

0

如果您要在IIS 6或IIS 7上部署,只需使用内置的IIS压缩。我们正在生产站点上使用它来压缩HTML,CSS和JavaScript,没有任何错误。它还会在服务器上缓存压缩版本,所以压缩命中只需要一次。

+0

不幸的是,使用默认设置似乎打破了IE7/8中的zip文件。事实证明,默认情况下,IIS想尝试压缩zip文件,这很愚蠢。 – 2009-05-16 16:41:17