3

この質問は、私の以前の投稿「 CSS loading issue with Android ICS 」に関連しています。

Android ICS のデフォルトおよび Dolphin browser による 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 のデフォルトおよび Dolphin Browser では、コンテンツ (特に css、js コンテンツ) をレンダリングできません。他のすべてのブラウザで動作します。

しかし、本質的に、圧縮されていないデータが送信されるため、バックエンド エンジンにもいくつかの問題があります。応答ヘッダーには、注目すべき興味深い点がいくつかあります。

  1. 応答ヘッダーには、「Content-Encoding gzip」というフィールドが含まれています
  2. ただし、Content-Length は、圧縮されていないバージョンのリソースの長さを示します。

この問題を解決するために、問題の原因である可能性があると思われる場所で、 Architecture のいくつかの小さな変更を試みました。fastCGI を CGIに置き換えることで問題が解決し、データが圧縮形式で送信されるようになりました。


問題

問題は解決しましたが、私は間違いなくfastCGI を使いたいです。そのため、問題を解決できる構成変更の可能性を探しています。サーバーのApache設定で次の手配を行いました:

  1. 利用可能な Apache モジュールからdeflate モジュールを有効にします。
  2. 私の/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>
    
  3. ファイル内のスクリプトで fastCGI を機能させるために、次の行があり/etc/apache2/sites-enabled/defaultます。

    <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
    

質問

さまざまな構成変更を試みましたが、どれも私の問題を解決していないようです。FastCGI で圧縮を有効にするためにここに欠けているものはありますか?

4

1 に答える 1

2

最後に、ここで問題の解決策を見つけることができました: http://wiki.catalystframework.org/wiki/deployment/apache_fastcgi

ここで、質問の回答について:なぜ私のアプリケーションはとても遅く、空白のページを提供し、および/または予期せず動作するのですか? FAQセクションで、彼らははっきりと言っています。

mod_fastcgimod_deflateは、特定のバージョンの apache (Debian Lenny ストック パッケージなど) ではうまく共存できません。回避策は、deflate モジュールをロードしないことです。別の解決策は、mod_fastcgi の最新のスナップショット バージョンをビルドしてインストールすることです( http://www.fastcgi.com/dist/にあります)。

投稿で提案されているように、サーバー上の libapache2-mod-fastcgiパッケージを更新したところ、正しい応答ヘッダー値でクライアント側で圧縮データを取得しています。

于 2012-08-07T13:21:11.717 に答える