Turbogears-caching
TurboGears –キャッシュ
Webアプリケーションのパフォーマンスを向上させるために、特に長時間の操作に関与している場合は、キャッシュ技術が使用されます。 TurboGearsは、2種類のキャッシュ手法を提供します-
全ページキャッシュ
HTTPプロトコルレベルで動作し、ユーザーのブラウザまたは中間プロキシサーバー(Squidなど)がリクエストをインターセプトし、キャッシュされたファイルのコピーを返すことにより、サーバーへのリクエスト全体を回避します。
アプリケーションレベルのキャッシュ
これはアプリケーションサーバー内で機能し、計算された値(多くの場合、複雑なデータベースクエリの結果)をキャッシュします。これにより、将来のリクエストで値を再計算する必要がなくなります。 Webアプリケーションの場合、アプリケーションレベルのキャッシングにより、複雑なクエリの結果を柔軟にキャッシュできるため、特定のコントローラーメソッドの合計負荷をユーザー固有またはケース固有のいくつかのクエリとテンプレートのレンダリングオーバーヘッドに減らすことができます。 。
アプリケーションレベルのキャッシュ
前述のとおり、「クイックスタート」TurboGearsプロジェクトは、キャッシュサポートのためにBeakerパッケージを有効にするように構成されています。 Beakerは、キャッシュストレージに使用される次のバックエンドをサポートしています-
- memory -プロセスごとのストレージに使用されます。 非常に高速です。
- filesystem -プロセスごとのストレージおよびマルチプロセス。
- * DBMデータベース*-プロセスごと、マルチプロセス、かなり高速。
- * SQLAlchemyデータベース*-データベースサーバーごとのストレージ。 上記のオプションと比較して遅い。
- Memcached -マルチサーバーメモリベースのキャッシュ。
コントローラーのキャッシュ
コントローラーの迅速なキャッシュのために、* cached()*デコレーターが利用可能です。 リクエストのさまざまなパラメーターに応じて、コントローラー本体全体がキャッシュされます。 * tg.decorators.cached()*デコレータの定義は次のとおりです。
パラメータの説明は次のとおりです-
Sr.No. | Parameters & Description |
---|---|
1 |
key キャッシュキーの生成に使用されるコントローラーパラメーターを指定します。 |
2 |
expire キャッシュが期限切れになるまでの秒単位の時間。デフォルトは「never」です。 |
3 |
Type dbm、memory、file、memcached、またはNone。 |
4 |
cache_headers 応答ヘッダーを示すヘッダー名のタプル。 |
5 |
invalidate_on_startup Trueの場合、キャッシュはアプリケーションが起動または再起動されるたびに無効になります。 |
6 |
cache_response 応答はキャッシュされるかどうか、デフォルトはTrueです。 |
以下は、コントローラのキャッシュの例です-
テンプレートレベルのキャッシュ
Genshiテンプレートエンジンは、コンテンツが変更されていない場合、キャッシュからテンプレートを取得します。 このキャッシュのデフォルトサイズは25です。 デフォルトでは、テンプレートの自動再ロードはtrueです。 パフォーマンスを改善するために、次の設定を app_cfg.py で行うことができます-
テンプレートをキャッシュするには、キャッシュされたテンプレートをレンダリングするコントローラーから tg_cache オプションを返すだけです。
tg_cacheは、次のキーを受け入れる辞書です-
- key -キャッシュキー。 *デフォルト:*なし。
- expire -キャッシュが存続する時間。 *デフォルト:*有効期限はありません
- type -メモリ、dbm、memcached。 デフォルト: dbm。
次の例は、テンプレートのキャッシュを示しています-