Coldfusion IE和Safari无法打开/读取/膨胀压缩的CSS或JavaScript

Coldfusion IE和Safari无法打开/读取/膨胀压缩的CSS或JavaScript,coldfusion,gzip,coldfusion-10,Coldfusion,Gzip,Coldfusion 10,我遇到了一个看起来很特别的问题,到目前为止我还没有弄清楚 我在我们的网站上截取了一堆静态CSS和JavaScript文件,供客户的浏览器使用。我正在使用ColdFusion页面检查Accept编码,以确定浏览器是否表示它可以膨胀.gz文件。如果不能,我会发送常规的.css或.js文件 在实现这个过程之后,我在本地和我们的开发环境中对它进行了测试,在所有主要浏览器中都没有问题。然而,仅在我们的生产环境中,Safari和IE似乎无法膨胀gzip文件,尽管在我检查Accept编码时指示它们可以膨胀 下

我遇到了一个看起来很特别的问题,到目前为止我还没有弄清楚

我在我们的网站上截取了一堆静态CSS和JavaScript文件,供客户的浏览器使用。我正在使用ColdFusion页面检查Accept编码,以确定浏览器是否表示它可以膨胀.gz文件。如果不能,我会发送常规的.css或.js文件

在实现这个过程之后,我在本地和我们的开发环境中对它进行了测试,在所有主要浏览器中都没有问题。然而,仅在我们的生产环境中,Safari和IE似乎无法膨胀gzip文件,尽管在我检查Accept编码时指示它们可以膨胀

下面是Safari读取文件的一个片段:

,� !T common.css�}K��F��� �?�,4.��� �� �8{�� ���־� n%�JܖD-IuuY��~�Έ��$嗯���.�̌�|E�;7.���Z����T�>��ݮ�[��B��� �G���ݫ.��H�Q O>�_韦斯>�/�'��U�-6Nى�K�Fy�] T1-fE� ¬�Į>

所有三台服务器上都是Windows机器,在tomcat上运行ColdFusion 10。我们在所有服务器上也使用IIS 7.5

经过上周的大量研究,我还没有找到一个解释/解决方案

我在网上读到的信息表明,“传输编码:分块”可能是个问题。我可以在IE Safari的响应标题中看到它列为传输编码:标识,该标题仅在查看生产环境时出现

就传输编码而言,当它不在本地和dev中时,内容长度头通过“传输编码:分块”时它不在的地方

我还可以确认,在所有三种环境中,都在IIS中为站点启用了静态压缩。 许多人建议通过IIS的ASP部分禁用分块传输编码,虽然我们可以这样做,但我不确定这是否是个好主意

我们的生产环境中没有安装ASP,可以理解,我们的系统管理员对安装它很谨慎,因此当我们不在ASP中编写任何内容时,它会出现在IIS中

我也读过关于强制使用http/1.0而不是允许http/1.1的文章,但这似乎是一种逃避,而且效率相当低

但是这是我们唯一的选择吗?如果是的话,它值得吗?我甚至认为这是正确的方式吗?我想预编译.gz文件以消除生产服务器上任何不必要的处理

我不确定我还能提供什么其他信息来帮助你,但如果需要的话,我很乐意为这篇文章提供更多信息

加载CSS的.cfm示例:

<cfparam name="URL.name" default="" />

<cfif Len( URL['name'] ) GT 0 AND Len( url.name ) LT 64 AND ReFind( url.name, "[^a-zA-Z\-\.\_]+" ) EQ 0>

    <cfif CGI['http_accept_encoding'] CONTAINS "gzip" AND FileExists( ExpandPath( './css/' & url.name & '.gz' ) )>

        <cfheader name="Content-Encoding" value="gzip" />
        <cfcontent reset="true" type="text/css" deletefile="no" file="#ExpandPath('./css/#url.name#.gz')#" />

    <cfelseif FileExists( ExpandPath( './css/#url.name#.css' ) )>

        <cfcontent reset="true" type="text/css" deletefile="no" file="#ExpandPath('./css/#url.name#.css')#" />

    </cfif>

</cfif>

<cfabort>