Djangoキャッシングフレームワークは、開発者が頻繁にアクセスできるようにすることができる幅広いシナリオとユースケースを提供します。以下は、一般的なキャッシュシナリオです
ページキャッシング。これは、サイト上の頻繁に訪問されるページが完全にキャッシュされているシナリオです。アプリケーションは、ページのキャッシュバージョンをページのキャッシュバージョンを取得し、リクエストが行われたときにそれらをレンダリングします。
セッションと認証キャッシュ。キャッシュを使用して、合理化されたユーザーエクスペリエンスと応答時間が短縮される場合があります。キャッシュされたデータにより、ユーザーはアプリケーションの認証されたセクションを簡単に移動できるため、キャッシュ認証とセッションの詳細は、冗長認証操作を減らすのに役立ちます。
Django Cachingのキャッシュは、データが本質であり、速度がより重要であるこの最新の環境で、Web開発者にとってより有利になりました。これらは、キャッシングの利点の一部です:
応答時間の短縮。キャッシュは、データベースのヒットを減らすことで応答時間を最小限に抑えます。キャッシュにより、データを必要になるたびにデータベースから直接ではなく、便利な場所からデータを取得できます。一部のデータには、完了するのに時間がかかる高価な計算が必要なため、データベースから必要になるたびにデータを取得することは、すべてのデータに最適な選択ではないかもしれません。データを保存し、必要なときにいつでも利用できるようにすることにより、キャッシュはその日を節約します。
djangoプロジェクトのセットアップ
このセクションの主なタスクは、仮想環境を作成し、プロジェクトに必要なモジュールをインストールすることです。仮想環境を作成するには、端末にこのコマンドを入力してください。Windowsではこれを使用してください:
$ python <span>-m venv project </span>
Djangoを正常にインストールした後、Djangoプロジェクトとアプリケーションを作成しましょう。 djangoプロジェクトを作成するには、実行されます:
$ .<span>\project\Scripts\activate </span>
プロジェクトのフォルダーに移動します。ここでは、Djangoアプリケーションを作成します。このコマンドを実行してください:
$ <span>source project/bin/activate </span>
そしてこれを実行してください:
$ pip <span>install django </span>
プロジェクトとアプリケーションの作成に成功した後、アプリケーションをプロジェクトに登録する必要があります。 settings.pyファイルを開き、installed_appsリストを次のようにします。
$ django-admin startproject cachedproject
注:djangoプロジェクトでアプリケーションを使用するには、installed_appsリストに登録する必要があります。 さあ、Djangoフレームワークが正常にインストールされていることを確認するために、テストしましょう。ターミナルで、このコマンドを実行します:
下の図の出力を取得していることを確認してください。
$ <span>cd cachedproject </span>
URLをコピーして、Webブラウザに貼り付けます。予想される出力を以下に示します。
注:SitePointでDjangoプロジェクトとDjangoアプリをすばやく開始することの詳細を読むことができます。
キャッシュを使用するには、Djangoプロジェクトで構成する必要があるため、このセクションでは、Djangoで利用可能なさまざまなキャッシュシステムを構成する方法について説明します。 ローカルメモリキャッシング
ローカルメモリキャッシュは、あらゆる種類のクロスプロセスキャッシュを防ぎ、個々のプロセスが個別のプライベートキャッシュインスタンスを維持するプロセスごとのメカニズムを含むため、生産環境での使用にはそれほど適していません。それにもかかわらず、それはまだ良い選択です
アプリケーションでローカルメモリキャッシングを構成するには、settings.pyファイルに次のコードを追加します。ファイルベースのキャッシュでは、各キャッシュ値はシリアル化され、キャッシュ時にファイルに個別に保持されます。小規模なアプリケーションや、メモリベースのキャッシュが実用的ではない場合に役立ちます。
このキャッシングシステムの欠点は、メモリベースのキャッシュと比較して比較的遅いことです。
アプリケーションでファイルベースのキャッシングを構成するには、settings.pyファイルに次のコードを追加します:
Windowsにいる場合は、このようなドライブ文字で場所のパスを開始することを確認してください。
$ python <span>-m venv project </span>
ファイルにキャッシュを保存し、マシンのRAMをホストすることとは別に、Djangoはデータベースにキャッシュを保存する機能も提供します。
これは、高速で適切にインデックスされたデータベースサーバーを持っている場合に最適に機能します。アプリケーションでデータベースキャッシングを使用するには、settings.py:
内部に次のコードを追加します。次のコマンドを使用して、キャッシュを使用する前に上記のセットアップに記載されているデータベーステーブルを作成します。
$ .<span>\project\Scripts\activate </span>
上記のコマンドは、Djangoのデータベースキャッシュシステムが期待する適切な形式でデータベース内にテーブルを作成します。テーブルの名前は場所から取られます。この場合、テーブルの名前はmy_cache_tableになります
memcachedキャッシング$ <span>source project/bin/activate </span>
Memcachedは、データベースアクセスを減らしてサイトのパフォーマンスを増やすために、いくつかの人気企業でもWeb開発者が使用するメモリ内キャッシュシステムです。
locmemキャッシュとは対照的に、memcachedはデーモンとして動作します。これは、Memcachedサーバーが直接的なユーザーインタラクションとは無関係に背景プロセスとして実行されることを意味します。したがって、memcachedはマシンに個別にインストールする必要があります。次に、Djangoアプリケーションで、PylibMCやPymemcacheなどのバインディングの1つをインストールおよび構成して、Memcachedを使用します。Memcachedテクノロジーは、高速データストレージと取得用に設計されているため、読み取りまたはクエリの高いロードを備えたアプリケーションに特に適しています。
Memcachedの欠点は、データがメモリに保存されるため、サーバーがクラッシュすると失われるということです。redis
Redisは、キャッシュに使用できるインメモリデータベースです。 Redis Inmemoryデータストレージを使用してデータをキャッシュします。 Redisはその迅速さと適応性で有名であり、分散システムと高性能キャッシュに最適なオプションです。
アプリケーションでRedisを使用してデータをキャッシュするには、ローカルまたはリモートマシンで実行されるRedisサーバーが必要です。マシンにRedisをセットアップするには、Redis Getting Guideをお読みください。$ pip <span>install django </span>
Redis-Pyインターフェイスは、DjangoによってネイティブにサポートされるバインディングまたはDjango-RedisおよびRedisパッケージを使用しています。 Redisサーバーがlocalhost(127.0.0.1)で実行されていることを考えると、
Redisキャッシングをアプリケーションで構成するために、port = 6379、settings.py:$ python <span>-m venv project </span>
Redisの複雑さと外部サービスへの依存は、そのトレードオフです。 Redisのインストールと構成は、他の特定のキャッシュバックエンドよりも難しい場合があります。オンラインでは、2番目のサーバーと維持が必要です。 Redisの使用は、外部サービスに依存します。 Redisに問題があるか、ダウンしても、アプリケーションのキャッシュ機能が影響を受ける可能性があります。 Redisを使用してDjangoでキャッシュを実行します
キャッシュ
を表示します次に、admin.pyファイルを開き、このコードを貼り付けます:
このコードスニペットは、django管理ダッシュボードのモデルプログラマーを登録します。
$ .<span>\project\Scripts\activate </span>
また、これを実行してください:
$ <span>source project/bin/activate </span>
Djangoでは、ターミナルを介して、および管理ダッシュボードを介して、2つの方法でモデルを入力できます。しかし、簡単にするために、管理ダッシュボードを使用します。管理者ダッシュボードはスーパーユーザー専用であるため、作成する必要があります。端末で、次のコマンドを実行します:
$ pip <span>install django </span>
スーパーユーザーの作成に正常に作成した後、ローカルサーバーを起動し、ブラウザでこのURLを入力します:http://127.0.0.1:8000/admin/。下の画像は、あなたが取得するページを示しています。
$ django-admin startproject cachedproject
ログインするには、スーパーユーザーの資格情報を提供し、次のようにモデルにデータを入力してください。
$ <span>cd cachedproject </span>
プロジェクトのurls.pyファイルにホームビューを登録しましょう。 CachedProjectフォルダー内で、urls.pyファイルを開き、このコードを貼り付けます。
$ python <span>-m venv project </span>
Djangoデバッグツールバーをインストールしましょう。これは、開発者がDjangoアプリケーションのパフォーマンスを監視するのに役立つPythonパッケージであり、データベースクエリ、HTTPリクエスト、テンプレートのレンダリング時間などに関する詳細な情報を提供します。したがって、端末に、このコマンドを入力してください:
$ .<span>\project\Scripts\activate </span>
django-debug-toolbarを構成するには、settings.pyファイルを開き、installed_appsリストを次のように編集します。
$ <span>source project/bin/activate </span>
$ pip <span>install django </span>
これの前にも来るはずです:
$ django-admin startproject cachedproject
次のようにRedisキャッシュの構成を追加します:
$ <span>cd cachedproject </span>
また、
このコードを設定に追加してください。$ python manage.py startapp cachedapplication
最後に、urls.pyファイルでデバッグツールバーURLを構成しましょう。インポートのすぐ下で、このコードラインを追加します:
INSTALLED_APPS <span>= [ </span> <span>'django.contrib.admin', </span> <span>'django.contrib.auth', </span> <span>'django.contrib.contenttypes', </span> <span>'django.contrib.sessions', </span> <span>'django.contrib.messages', </span> <span>'django.contrib.staticfiles', </span> <span># new application added </span> <span>'cachedapplication', </span><span>] </span>
urlpatternsリストの内部このコードを追加します:
$ python manage.py runserver
ここまで到達したので、私たちは行ってもいいです。サーバーを実行し、このURLをブラウザに貼り付けます:http://127.0.0.1:8000/home/。下の画像は、私たちが取得したページを示しています。
<span># CACHES dictionary which contains caching configurations. </span>CACHES <span>= { </span> <span># a cache alias or name. In this case, we use "default" as the alias. </span> <span>"default": { </span> <span># Here, we're using the in-memory cache backend. </span> <span>"BACKEND": "django.core.cache.backends.locmem.LocMemCache", </span> <span># LOCATION parameter gives a unique name or identifier to this cache instance. </span> <span>"LOCATION": "unique-snowflake", </span> <span>} </span><span>} </span>
キャッシュ
名前が示すように、ビューキャッシュキャッシュには、個々のジュンゴビューの結果のキャッシュが含まれます。このセクションでは、ビューキャッシングを実装します。これを行うには、view.pyファイルをいくつか変更します。それを開いて、このインポートを追加します:
<span># A CACHES dictionary, which contains caching configurations. </span>CACHES <span>= { </span> <span># we use "default" as the alias. </span> <span>"default": { </span> <span># Here, we're using the file-based cache backend. </span> <span>"BACKEND": "django.core.cache.backends.filebased.FileBasedCache", </span> <span># LOCATION parameter to specify the file system path where cached data will be stored. </span> <span>"LOCATION": "/var/tmp/django_cache", </span> <span>} </span><span>} </span>
同じビューにアクセスして、ページを更新します。以下に描かれた結果を取得します。
CACHES <span>= { </span> <span>"default": { </span> <span>"BACKEND": "django.core.cache.backends.filebased.FileBasedCache", </span> <span>"LOCATION": "C:/my/path-to/file", </span> <span>} </span><span>} </span>
テンプレートフラグメントキャッシュ
このキャッシュには、プロジェクトのテンプレートの特定の部分をキャッシュすることが含まれます。テンプレートに重度の計算がある部分がある場合、テンプレートフラグメントキャッシングが役立ちます。このキャッシングを実装するには、これらのタグを使用します:{%cache%}、{%cache%}、および{%endcache%}。 {%Cache%}タグは、キャッシュタイムアウトと、特定のキャッシュフラグメントを識別するための一意のキャッシュキーの2つの引数を取ります。
このキャッシュ技術を実装する前に、プロジェクトを実行してみてください。以下の画像は、私たちが得るものを示しています。
合計時間は220.26msで、3つのSQLクエリが7.75msで実行されます。
キャッシュ技術を実装しましょう。テンプレートのファイルの上部では、{%Cache%}を介してキャッシュをロードしており、{%Cache 500 Programmers%}および{%EndCache%}。
もう一度プロジェクトを実行すると、以下の写真が表示されます。$ python <span>-m venv project </span>
上の画像では、キャッシュが実装された後に結果が改善されたことがわかります。
敷地ごとのキャッシュ
そしてこれらの行を追加します:
結論
$ .<span>\project\Scripts\activate </span>
この記事を楽しんだ場合は、SitePointでDjangoの記事をもう少しチェックしてください。
以上がDjangoキャッシングの包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。