为什么ASP.NET gzip压缩会破坏CSS?
我有一个正在处理的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。
是否只有CSS文件被损坏? JS文件(或任何其他静态文本文件)通过了吗?
如果直接浏览到CSS文件,还可以复制行为吗?
我一直在使用这种方法只启用压缩在Windows 2003服务器的IIS:
- IIS→Web站点→属性→服务选项卡,选中这两个框
- IIS→Web服务扩展→单击鼠标右键,添加新
Name Http Compression Required Files %systemroot%\system32\inetsrv\gzip.dll
- IIS→右击顶级节点,互联网信息服务,检查启用直接元数据库编辑
- 备份和编辑
%systemroot%\system32\inetsrv\MetaBase.xml
- 查找
Location ="/LM/W3SVC/Filters/Compression/gzip"
- 添加
png
,css
,js
和任何其他静态文件扩展名HcFileExtensions
- 添加
aspx
和任何其他可执行文件扩展HcScriptFileExtensions
- 保存
- 添加
- 查找
- 重新启动IIS(运行
iisreset
)
如果您有Windows 2003/2008服务器与您一起玩,可以试试这种方法。
如果您要在IIS 6或IIS 7上部署,只需使用内置的IIS压缩。我们正在生产站点上使用它来压缩HTML,CSS和JavaScript,没有任何错误。它还会在服务器上缓存压缩版本,所以压缩命中只需要一次。
不幸的是,使用默认设置似乎打破了IE7/8中的zip文件。事实证明,默认情况下,IIS想尝试压缩zip文件,这很愚蠢。 – 2009-05-16 16:41:17
IE7/8正在下载损坏的zip文件,而Firefox/Chrome/Opera没有。这似乎是因为IIS6是gzip压缩zip文件,这会使IE不高兴。您的解决方案解决了我的问题,IIS不再尝试重新压缩压缩文件。 – 2009-05-16 16:39:52