这个问题与我之前的帖子相关:Android ICS 的 CSS 加载问题 https://stackoverflow.com/questions/11575189/css-loading-issue-with-android-ics.
我遇到问题的地方Android ICS默认和Dolphin浏览器的CSS和JS渲染。此内容由我的服务器后端引擎提供,该引擎使用 (Apache2 + FastCGI + Python) 设置。
在搜索可能的问题时,我发现问题的主要原因是内容没有以压缩形式从服务器发送。
所以样品响应头看起来如下:
Connection Keep-Alive
Content-Encoding gzip
Content-Length 5997
Content-Type text/css
Date Sun, 29 Jul 2012 14:29:08 GMT
Keep-Alive timeout=15, max=100
Server Apache (Ubuntu)
Vary Accept-Encoding
以及如果通过平面文件提供相同的内容。响应标头如下所示。所有浏览器都能正确呈现。
Accept-Ranges bytes
Connection Keep-Alive
Content-Encoding gzip
Content-Length 1430
Content-Type text/css
Date Sun, 29 Jul 2012 14:28:57 GMT
Etag "a9c06-176d-4c5e693c2a6c0"
Keep-Alive timeout=15, max=100
Last-Modified Sat, 28 Jul 2012 16:46:59 GMT
Server Apache (Ubuntu)
Vary Accept-Encoding
不知何故,Android ICS 的默认浏览器和海豚浏览器无法渲染内容(特别是 css、js 内容)。它适用于所有其他浏览器。
但本质上,后端引擎也存在一些问题,因为未压缩的数据被发送。在响应头中,有几个有趣的点值得一看:
- 响应标头包含显示“内容编码 gzip"
- 但Content-Length显示了资源的未压缩版本的长度。
为了解决我尝试过的问题架构上的一些小变化,在我认为可能是问题原因的地方。
我注意到,用 CGI 替换 fastCGI 解决了我的问题现在数据以压缩格式发送。
Problem
虽然问题已经解决了,但我绝对想要使用fastCGI。所以我正在寻找可以解决问题的可能的配置更改。
我在服务器的 Apache 设置中做了以下安排:
-
启用放气模块来自可用的 Apache 模块。
-
My /etc/apache2/mods-enabled/deflate.conf
文件具有以下文本:
<IfModule mod_deflate.c>
# these are known to be safe with MSIE 6
AddOutputFilterByType DEFLATE text/html text/plain text/xml
# everything else may cause problems with MSIE 6
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
AddOutputFilterByType DEFLATE application/rss+xml
</IfModule>
-
我有以下几行使 fastCGI 与我的脚本一起工作/etc/apache2/sites-enabled/default
file.
<Files my_script_name.py>
SetHandler fastcgi-script
</Files>
FastCgiServer /path_to_script/my_script_name.py -processes 4 -socket /tmp/my_script_name.sock
Question
我尝试了各种配置更改,但似乎都没有解决我的问题。有什么我想念的吗使用 fastCGI 启用压缩?