Fork me on GitHub

キャッシング

キャッシングで、よくある操作の結果を保存しておいたり、クライアントへの応答を予め生成し配信することでサーバ上の負荷を減らすことができます。

例えば、ほとんど変更が加えられないようなデータベースのデータを利用せずに、そのようなデータをメモリ上に保管しておく方法が考えられます。メモリ上のデータは、ハードディスクのようなディスクを利用してデータを管理するデータベース上のデータよりも高速に処理することができます。キャッシュされたデータに変更があったら、システムはキャッシュしたデータを無効にし、以降のリクエストに備えて再度キャッシュし直します。

キャッシュは様々なアプリケーションレイヤーで利用できます。

キャッシュに利用できるシステム

  • memcachedは一般的に使われている、インメモリキャッシングシステムです。
  • Redisはキーバリュー形式のインメモリデータベースで、django-redis-cacheのようなライブラリを使って簡単に設定することができます。

キャッシングを学ぶためのリソース

  • "Caching: Varnish or Nginx?"では、NginxやVarnishをリバースプロキシに使う際に、SSLやSPDYをサポートする方法について考察しています。

キャッシングを学ぶためのチェックリスト

あなたのWebアプリケーションの遅い部分を分析しましょう。それは、複雑なデータベースへのクエリで、インメモリデータストアで扱える可能性が高いです。

すでにセッションデータにインメモリデータストアを利用している場合は、複雑なデータベースへのクエリの結果をキャッシュするためにも利用しましょう。

キャッシュデータが正確に配信されるようにキャッシュを無効にする方法を取り入れましょう。

アプリケーションを高速化したら、何を学びますか?

HTTPリクエスト・レスポンスのサイクル外でPythonを実行するには?

アクセス解析をすることで、ユーザの何を学ぶことができますか?

Webアプリケーションのセキュリティについて知っておくべきことは?

サーバの設定を自動化するには?


Interested in a complete Full Stack Python book with detailed tutorials and example code? Sign up here and you'll get an alert email if a book is created. No other emails will be sent other than sign up confirmation.