web-dev-qa-db-ja.com

Apacheの背後にあるPloneサイトのパフォーマンスを向上させるためのベストプラクティス

Apache2.4サーバーの仮想ホストで実行されているPloneサイトが少数あります。パフォーマンスがもっと良くなるのではないかと強く感じています。

Ploneサイトのかなり基本的なセットアップを想定しましょう:

__コード__

このセットアップでは、ほとんどすべてがZopeサーバーによって実行され、ポート<VirtualHost *:80> ServerAdmin [email protected] ServerName www.example.com CustomLog /var/log/httpd/vhost-example.log combined ErrorLog /var/log/httpd/vhost-example.error.log RewriteEngine on DocumentRoot /opt/zope/instances/example/htdocs ErrorDocument 502 /error-500.html ErrorDocument 503 /error-500.html RewriteEngine On RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/%{HTTP_Host}:80/example/VirtualHostRoot/$1 [L,P] </VirtualHost> をリッスンします。ポート8080は、仮想フォルダー/example(オブジェクトデータベースにあります)でPloneサイトを実行します。

現在、このサーバーはいくつかの静的リソースを提供しています。画像とスタイルシート(ファイルシステムに存在する)、およびスクリプトのコンパイルやタイムスタンプ付きの名前を持つスタイルシート(ファイルシステムの場所がない)などのいくつかの疑似静的リソース。

一部の静的リソースには、物理​​リソースが配置されている場所にヒントを与えるパスがあります(たとえば、/++resource++browsername/name-of-script.js、ここでbrowsernameはヒントです)。他のものはいわゆるスキンから(つまり、それらを含む最初のスキンから)取得され、スキン名(とにかく応答からはわかりません)からファイルシステムの場所を簡単に見分ける方法はありません。

このようなリクエストは、そのスレッドの1つを使用して、基盤となるZopeサーバーで処理する必要はありません。 Apacheがそれ自体でできることをZopeから遠ざけ(より効率的に、Zopeのスレッドをブロックせずに)、コンテンツをキャッシュするために推奨される戦略は何ですか?

したがって、完全なソリューションには次のものが含まれる可能性があります

  • 可能であれば、静的リソースの個別のパスを既知のファイルシステムの場所にマッピングする
  • スキンから取得された静的リソースのいくつかの場所を試します
  • 生成されたリソースのキャッシュ(HTMLページ、CSSまたはJavascriptのコンパイルなど)

そして、ZEOのセットアップでは、

  • 負荷分散(ZEOサーバーと通信する多数のZEOクライアントへの要求の分散)

どこかに構成ガイドはありますか?

1
Tobias

Ploneの主な目的は、ウェブサイトを共同で編集できるマルチユーザーコンテンツ管理システムを提供することです。価格は、Webコンテンツプレゼンテーションの動的な作成と速度の低下です。ほとんど自分で編集する小さくて高速なWebサイトが必要な場合は、静的Webサイトを作成するジェネレーターソフトウェアを使用したほうがよい場合があります。それらのかなりの数が商用とオープンソースの両方で入手可能です。そうは言っても、原則として、Apacheの背後にあるあらゆる種類のソースから動的および静的に生成されたコンテンツを組み合わせることができます。 http://httpd.Apache.org/docs/2.4/urlmapping.html 、サイトのツリー構造の任意のリーフノード。

1
Martin