2008-09-20 17 views
3

私はopenbluedragonを実行しているサーブレットを持っています。すべてがコンパイルされ、イメージを除いてすべてquikがコンパイルされます。画像配信のための最適化の提案はありますか?ここでTomcat 6でイメージを高速化

は私のserver.xmlです:

<Service name="Catalina"> 

     <Connector port="8009" protocol="AJP/1.3" /> 
     <Connector port="8080" maxThreads="100" protocol="HTTP/1.1" connectionTimeout="20000" /> 
     <Engine name="Standalone" defaultHost="hostname.whatever" jvmRoute="ajp13"> 

     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> 
     <Host name="hostname.whatever" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 
     ...context 
     </Host> 

    </Engine> 
    </Service> 

答えて

4

別のオプションは、フロントエンドとしてApacheを使用し、Tomcatとmod_jkを接続することです。この方法で、Apacheが静的コンテンツ(例えば、画像、CSS、JavaScript)を提供し、Tomcatに動的コンテンツを生成させることができます。静的コンテンツと動的コンテンツを分離するための作業は少し残っているかもしれませんが、私にとってはうまくいきます。

Unixでは、フロントエンドとしてApacheを使用することは、ポート80にバインドされているため、rootとして実行することが多いため、良い選択肢です。 Apacheは、ポートをバインドした後にルート権限を削除する方法を知っています。Tomcatはポートをバインドしません。パブリックに直面しているサーバーをrootとして実行する必要はありません。

(これは、リバースプロキシの回答に似ていますが、プロキシが、mod_jkの伴わない)

+0

おかげさまで、私はmod_jkを調べましたが、多くの人がそれを使用していることは知っていますが、実際にはmod_jkを介してサーバーイメージと静的コンテンツを実際にベンチマークしているようです。私のJavaアプリケーションが遅くなることを心配して、より速いw \ apacheを提供するだろう – ethyreal

3

オプションを持っている場合は、あなたのアプリケーションの前にリバースプロキシを追加することができます。仕事場では、すべての着信HTTP接続を受け取るApache Webサーバーがあります。 URLに基​​づいて、要求を別のサーバーに転送するか、コンテンツ自体を配信します。私はこのアプローチを使って、Tracサイトの静的コンテンツの配信を加速しました。 ProxyPassおよびProxyPassReverseディレクティブは、このルートに移動したいかどうかを調べるのに適しています。

単純な例として、/ imagesという仮想ディレクトリがある場合、Apacheはそのディレクトリ内の何かの要求を処理して、他のすべてをTomcatインスタンスに転送することができます。構文はかなり包括的です。静的コンテンツが識別される方法にまったくの方法がある場合、これは機能する方法です。

ここではApacheだけではありません。私はすべての最新のWebサーバーに同様の機能が含まれていると思います。私が今日始まっていたのであれば、LigHTTPdを見るよりも少なくて済んでいると思うでしょう。

キャッシングリバースプロキシであっても、自動的にこれを把握することさえあります。私はそれらのどれにも慣れていない。

4

あなたは何度も画像の同じセットを提供していますか?その場合、合理的なExpiresヘッダーを追加するサーブレット・フィルターを追加すると、Tomcatは多くの作業を節約できます。配信される画像の速度は向上しませんが、処理する必要がある要求の数を少なくします。これに関する多くの例がWeb上にあります。