キャッシュ定義

このページには、コア内のキャッシュ定義に関する情報が含まれています。この情報は、本当にMoodleのキャッシングシステムを最大限に活用しようとしている管理者にとって最も役に立つでしょう。各キャッシュに関する情報は、どの定義にどのバックエンドを使用するかを決定するのに役立ちます。

小規模なサイト、またはmemcacheなどの単一のバックエンドを採用している単一のサーバー上で実行されているサイトでは、すぐにパフォーマンスが向上します。
しかし、少し計画を立て、慎重にマッピングすることで、さらに改善することができます。

内容

この文書であなたが見つけること

コア内にある各キャッシュ定義はそれ自身の見出しの下にあり、キャッシュの説明を含みます。
名前と説明だけでなく、以下の情報も詳細になります。

導入されたバージョン:このキャッシュの定義は最初のMoodleに導入したとき。
Component / Area:このキャッシュが属するコードコンポーネントとそれに与えられた領域(一意の単純な名前)。
増加:このキャッシュが固定サイズであると予想されるのか、それともサイトデータが増大するにつれて増大すると予想されるのかを述べます。おそらくキャッシュがどのように大きくなるかについてのいくつかの情報。
Who:キャッシュから恩恵を受けると期待できるユーザーはどれですか。
優先順位:サイトで予想されるキャッシュ使用量の表示。 1から5までの値。キャッシュが固定サイズであり、すべてのページで利用されることが期待されるアクセスの場合、利用可能な最速のバックエンドにそのキャッシュを割り当てるのが良いと期待できるので優先順位として5が与えられます。アイディア。対照的に、優先度1は、急速に成長すると予想され、特定のページでのみアクセスされ、一部のユーザー(教師、管理者など)にのみ適用されるキャッシュに与えられます。あなたのサイトにキャッシュを実装する方法を決定するとき、このキャッシュはあなたの懸念のうちで最も少なくあるべきです。

大規模サイトでのキャッシュ構成に関する注意

それぞれ異なるキャッシュを個別に設定できるため、管理者は特定のシステム用に設定を「調整」できます。
デフォルトでは、これらのキャッシュはすべてファイルシステムを使用するように設定されています。これは通常、小さな1サーバーシステムでは問題ありません。

しかし、クラスタでは、共有ファイルシステムが遅いのでこれらのデフォルトは問題を引き起こす可能性があります。そのためこれらの場合は代わりにmemcachedのようなより速い共有キャッシングバックエンドを使用することをお勧めします。これらのキャッシュのほとんどは、それらが共有されているという仮定の下で動作していることに注意してください。
場合によっては、ローカルファイルシステムのように非共有キャッシュを使用することを選択できますが、これらの場合はシステム管理の一環として手動でキャッシュを削除するように注意してください。

アプリケーションキャッシュ

アプリケーションキャッシュは共有キャッシュです。

各コースのモジュールとセクションに関する累積情報

コースモジュール、およびコースページの印刷に使用されたセクション、およびget_fast_modinfo()の呼び出しに使用されたセクションに関する累積情報。
このキャッシュはrebuild_course_cache()内で強制的にリセットされます。

これは本番サイトでのキャッシュを最適化するための優れたキャッシュです。
これは主にコースビューページ、そして非常に頻繁にヒットし、しばしば高価なページのためにアクセスされます。そしてそれはget_fast_modinot()内で利用されます。

以降: Moodle 2.6
コンポーネント/エリア: core、coursemodinfo
増加率:指数関数、コース数、それらのコース内のセクション、および各セクション内の活動によって、このキャッシュのサイズが決まります。
誰が:このキャッシュはすべてのページでアクセスされるわけではありませんが、コースに関連付けられているため、アクセスが依然として高いことが予想されます。
優先度: 4

カレンダー購読

カレンダー購読をキャッシュします。
これは非常に単純なキャッシュで、すばやく具体的にアクセスできるようにデータベースからのカレンダー購読レコードを格納します。

ユーザーが多数のカレンダー購読を作成している可能性が低い場合を除き、これは優先度の低いキャッシュと見なす必要があります。
実際に保存されるデータは非常に小さくなります。たくさんのカレンダーサブスクリプションでこのキャッシュ定義を高速にマッピングする必要がある場合は、小さいバックエンドが理想的です。

以降: Moodle 2.5
コンポーネント/エリア: core、calendar_subscriptions
成長率:ユーザーが作成したカレンダーの添え字の数によって決まります。完全にあなたのユーザーに依存しています。
Who:カレンダーのサブスクリプト、カレンダーページ、またはカレンダーブロックが表示されているページを持つ人全員。
優先度: 1

高度なマルチサーバーサイトに関する注意事項

  • キャッシュされるもの: - さまざまなカレンダー購読を表す、 'event_subscriptions'テーブルからのエントリーを記録します。
  • キャッシュが更新されたとき: - カレンダー購読が更新または削除されたとき。
  • どのくらいの頻度でヒットします: - カレンダー購読の詳細が取得されるたびに。
  • キャッシュがいつ完全にパージされるべきであるか: - これは必要ではないはずです。

コンセプトリンク[mod_glossary]

用語集フィルタの概念をキャッシュします。

概念は、サイトまたはコースのいずれかに関してキャッシュされます。コースIDがコースの場合はキーとして使用され、サイトの概念の場合は0がキーとして使用されます。
キャッシュの各エントリは2つの項目からなる配列です。1つ目は用語集の配列、2つ目は概念の配列です。
大規模なサイトであっても、実際に格納されるデータは最小限で済み、このキャッシュに必要な記憶容量は比較的少なくてすみます。

重要このキャッシュはローカルキャッシュにはできません。共有する必要があります。

以降: Moodle 2.7( MDL-44366
コンポーネント/エリア: mod_glossary、コンセプト
増加率:指数関数、用語集の数、およびそれらの用語集内の用語の数によって、このキャッシュのサイズが決まります。
誰が:用語集フィルタが有効になっているときは誰でも。
優先度: 3

構成設定

サイトの設定をキャッシュします。これはコアとすべてのプラグインの両方の管理設定です。

このキャッシュはMoodle内のすべてのページでアクセスされる予定です。ユーザの状態や実行されていることにかかわらず。
このキャッシュを利用可能な最速のバックエンドにマッピングする必要があります。

以降: Moodle 2.4
コンポーネント/エリア: core、config
成長:固定、項目数はコアとすべてのインストール済みプラグインの設定数です。これは設定が導入または削除された場合にのみ増加します。
誰が:誰もが、すべてのページで、間違いなく。
優先度: 5

高度なマルチサーバーサイトに関する注意事項

  • 共有キャッシュが必要です。
  • このキャッシュは設定を取得するために頻繁にヒットします。

コースカテゴリツリー

このキャッシュは全コースカテゴリツリーを格納します。

コースカテゴリ構造をナビゲートするときによく使用され、ツリー全体またはツリーの一部が表示されている状況でヒットすることが予想されます。
これには、フロントページに表示するように設定できる要素がいくつか含まれています。
その使用は、あなたがMoodleをどのように設定したか、そして何が表示されるように設定されているかによって決まります。

以降: Moodle 2.5( MDL-38147
コンポーネント/エリア: core、coursecattree
成長:固定、あなたのサイトのコースカテゴリの数に制限されます。コース作成中、このサイトは明らかに成長しますが、日々の使用においては静的なままです。
誰が:
優先度: 3

高度なマルチサーバーサイトに関する注意事項

  • 共有キャッシュが必要です。
  • changesincoursecatイベントがトリガされたときに無効になります。

コースグループ情報

コースのグループ化情報をキャッシュします。

情報はコースに関連してキャッシュされ、非常に単純です。コースがグループを定義し、それらのグループが使用されている状況でのみ使用されます。
このキャッシュは、ページあたり1 - 2のクエリを節約すると予想されます。

以降: Moodle 2.5( MDL-34398
コンポーネント/エリア:コア、グループデータ
成長率:固定、これらのコース内のコースおよびグループの数によって、このキャッシュのサイズが決まります。
Who:グループが使用されているコースにアクセスしているすべてのユーザー。
優先度: 2

高度なマルチサーバーサイトに関する注意事項

  • コースのグループデータが取得されたときに更新されます。
  • 共有キャッシュが必要です。

データベースメタ情報

列に関する情報を含むデータベーステーブルのメタ情報をキャッシュします。

このキャッシュは優先度の高いキャッシュで、Moodle内のほぼすべてのページでアクセスされ、その操作は高価になる可能性があります。
各エントリはテーブル名をキーとして使用し、キャッシュされたデータはデータベーステーブルの構造です。

以降: Moodle 2.4( MDL-25290
コンポーネント/エリア:コア、データベースメタ
増加:データベーステーブルの数がこのキャッシュのサイズを決定し、アップグレード時およびプラグインのインストール/削除時にのみ変更される可能性があるという修正。
誰:みんな
優先度: 5

高度なマルチサーバーサイトに関する注意事項

  • 共有キャッシュが必要
  • 共有しない場合は、一時テーブルの作成を含むDB構造の変更後にキャッシュを無効にする必要があります。

イベント無効化

このキャッシュは、MUC APIのイベント無効化を管理するために使用されます。これは内部APIであり、2.7で導入されたEvent APIとは関係ありません。

これはMoodle内ではあまり使用されず、編集が行われて複数のキャッシュが削除される必要があるときに使用されます。すべてが共有されるとは限らず、ユーザが次にキャッシュに触れるとクリアされることもあります。全体的なキャッシュサイズは比較的小さくなければならず、ページアクセスでこれらのキャッシュのチェックが頻繁に行われるため、このキャッシュを高速バックエンドにマッピングすることをお勧めします。

以降: Moodle 2.4( MDL-25290
コンポーネント/エリア:コア、イベント検証
成長率:固定、イベントはdefinitinosによって購読されており、アップグレード中およびプラグインのインストールと削除中にのみ変更されます。
誰が:イベントはアクションによってトリガーされ、切断されたキャッシュではユーザーが次にそのページにアクセスするまでこれは反映されません。
優先度: 4

高度なマルチサーバーサイトに関する注意事項

  • 何かが無効にされるときはいつでも、それはすぐに一掃され、イベント記録はタイムスタンプで作成されます。
  • 共有キャッシュが必要です。

イベントオブザーバー

このキャッシュは、イベントオブザーバのリストを格納するために使用されます。

イベントオブザーバのリストを初期化している間にインストール/アップデートで更新されます。
このキャッシュは、イベントが発生したときにアクセスされます。

以降: Moodle 2.6( MDL-39846
コンポーネント/エリア:コア、オブザーバー
成長:
ですか?
優先度:

高度なマルチサーバーサイトに関する注意事項

  • 共有キャッシュが必要です。

特定のユーザーの外部バッジ

外部バッジを保管するために使用されます。

以降: Moodle 2.5.2、2.6MDL-40924
コンポーネント/エリア:コア、外部バッジ
成長:
ですか?
優先度:

条件付き利用を評価するためにキャッシュされた評定項目[availability_grade、items]

条件付き利用のためにコース評定項目をキャッシュするために使用されます。

注:このキャッシュは3600(1時間)のTTL(有効期間)を設定します。

以降: Moodle 2.7( MDL-44070
コンポーネント/エリア: availability_grade、アイテム
成長:
ですか?
優先度:

HTML Purifier - クリーンコンテンツ

これは悪意のあるデータの可能性を排除した後の、Moodleのすべての部分からのテキスト(フォーラムの投稿、リソース、情報など)のキャッシュです。

消去されたテキストのユーザー+コンテキストに関連して、消去されたテキストをキャッシュします。

ヒント:このデータは、信頼できるノードのローカルキャッシュに安全に格納される可能性があります。

以降: Moodle 2.4.2、2.5MDL-36297
コンポーネント/エリア: core、htmlpurifier
増加率:指数関数的でクリーンなコンテンツは通常、各ユーザー+コンテキストの組み合わせに対して1回格納されます。
誰:みんな
優先度: 3


高度なマルチサーバーサイトに関する注意事項

Moodle 2.5では、

  • これは共有キャッシュを想定しています
  • 共有していない場合は、アップグレードまたは$ CFG-> allowobjectembed設定の変更のたびに手動で削除する必要があります。

Moodle 2.6以降では、

  • これはローカルまたは共有ノードキャッシュでうまく機能します。特別なことをする必要はありません。

言語文字列キャッシュ

言語文字列キャッシュは、Moodle内で最も重要なキャッシュの1つです。Moodle内で使用されるすべての言語ファイルをキャッシュします。
有限数の言語と言語ファイルがあり、Moodle内のほぼすべてのページにアクセスされるため、サイズは固定されています。
これは設定するのに最適なキャッシュで、利用可能な最速のバックエンドにマッピングします。

文字列キャッシュは、言語ファイルのリビジョン、言語、およびコンポーネントのハッシュをキーとして使用し、対応するファイル内にある配列はデータです。
このキャッシュで静的アクセラレーションを使用して、特定の言語ファイル内の文字列に対する後続の要求を高速化します。文字列は通常一つずつ要求されるので、これは非常に重要です。そしてしばしばほんの一握りの言語ファイルからだけです。

ヒント:キャッシュ使用量は、管理者+管理者と教師+学生で大きく異なります。管理者や管理者が多くの場合、異なるコンポーネントやプラグインでより多くのアクションを実行できるようにするには、教師や学生などのユーザーが必要とするよりも多くの言語ファイルにアクセスする必要があります。
キャッシュ設定をテストするときは、必ず学生としてテストしてください。

以降: Moodle 2.4( MDL-25290
コンポーネント/エリア:コア、文字列
増加率:固定サイズ。各言語文字列ファイルはここにキャッシュされます。サイズは固定されますが、サイトで利用可能な言語の数によって決まります。
誰が: Moodle内のすべての閲覧可能なページ上の全員。
優先度: 5

高度なマルチサーバーサイトに関する注意事項

  • サイト間で共有する場合は、言語のカスタマイズも共有されることに注意してください。

Moodle 2.4とMoodle 2.6では:

  • 共有キャッシュが必要です。
  • 共有されていない場合は、ローカルの言語パックの編集、アップグレード中の言語パックの更新、言語のインストールまたはアンインストールなど、言語文字列の変更後に手動で削除する必要があります。

Moodle 2.6以降では

  • ローカルまたは共有ノードキャッシュで問題なく動作します。特別なことをする必要はありません。

利用可能な言語のリスト

利用可能な言語のリストをキャッシュします。

この言語リストは、ページ内で言語リストが要求されるたびに使用されます。
このため、複数の言語がインストールされているサイトでは、Moodle内の多くのページでキャッシュがヒットします。複数の言語を含むサイト上の小さな固定サイズのキャッシュとして、これを最速のバックエンドにマッピングすることをお勧めします。

以降: Moodle 2.6( MDL-41019
コンポーネント/エリア: core、langmenu
成長率:サイトにインストールされている言語の数によって決まります。
誰:みんな
優先度: 4

コースコンタクトのリスト

コースコンタクトをキャッシュするために使用されます。

コースのコンタクトはMoodle全体のいくつかの場所に表示され、ほとんどの場合公開情報(コース名など)と見なされ、すべてのユーザから見ることができます。
これらのコースコンタクトを一覧表示するプロセスは費用がかかる場合がありますが、コースコンタクトは一部のページにのみ表示されます。

以降: Moodle 2.5( MDL-38596
コンポーネント/エリア:コア、コース担当者
成長率:コースの数とコース担当者のロールを持つユーザーの数によって、このキャッシュのサイズが決まります。
誰が:誰もが、コースのコンタクトは公開情報であり、Moodleの至る所で誰でもアクセスできる場所に表示されるかもしれません。
優先度: 3

高度なマルチサーバーサイトに関する注意事項

  • これはコースのレンダリング/検索中にアクセスされます
  • 共有キャッシュが必要です。

プラグイン情報マネージャ

インストールされているプラグイン、有効化されているプラグイン、および現在のプラグインに関する情報をキャッシュします。

このキャッシュは管理インターフェースを通してサイトのプラグインを管理するときに多用されます。
主にこのページにアクセスする人々はこのキャッシュの存在から利益を得ます。

注:これは共有キャッシュである必要があります。

以降: Moodle 2.5( MDL-34401
コンポーネント/エリア: core、plugin_manager
成長:固定、プラグインの数がこのキャッシュのサイズを決定します。
誰が:主に管理者。
優先度: 2

プラグイン情報 - 基本

  • このキャッシュはplugininfo_baseクラスによって使用され、プラグイン情報を格納します。
  • これはディスクからプラグインのバージョンをロード/チェックしている間にアクセスされます。
  • 共有キャッシュが必要です。

プラグイン情報 - 活動モジュール

  • このキャッシュはplugininfo_modクラスによって使用され、modulesテーブル内のレコードへのアクセスを提供します。
  • これはモジュールのロード/チェック中にアクセスされます。
  • 共有キャッシュが必要です。

プラグイン情報 - ブロック

  • このキャッシュはplugininfo_blockクラスによって使用され、ブロックテーブル内のレコードへのアクセスを提供します。
  • これはブロックのロード/チェック中にアクセスされます。
  • 共有キャッシュが必要です。

プラグイン情報 - フィルタ

  • このキャッシュはplugininfo_filterクラスによって使用され、インストールされているすべてのフィルタの名前を格納します。
  • これはインストールされたフィルタをロード/チェックしている間にアクセスされます。
  • 共有キャッシュが必要です。

プラグイン情報 - リポジトリ

  • このキャッシュはplugininfo_repositoriesクラスによって使用され、リポジトリテーブル内のレコードへのアクセスを提供します。
  • これは有効なリポジトリをロードしている間にアクセスされます。
  • 共有キャッシュが必要です。

プラグイン情報 - ポートフォリオ

  • このキャッシュはplugininfo_portfolioクラスによって使用され、有効なポートフォリオプラグインのリストを格納します。
  • ポートフォリオが有効になっているかどうかを確認しながらこれにアクセスします。
  • 共有キャッシュが必要です。

質問の定義

質問の定義をキャッシュします。これは、問題バンククラスによって使用されます。

以降: Moodle 2.4( MDL-34399
コンポーネント/エリア:コア、質問データ
成長:
ですか?
優先度:

高度なマルチサーバーサイトに関する注意事項

  • 質問がロードまたは編集されると、これは更新されます。
  • データ保証は不要です。
  • 共有キャッシュが必要です。

条件付き利用を評価するためにキャッシュされたユーザー評定

以降:
コンポーネント/エリア:コア、評定条件
成長:
誰:
優先度:

条件付き利用を評価するためにキャッシュされたユーザー評定[availability_grade、score]

条件付き利用のためにユーザー評定をキャッシュするために使用されます。

注:このキャッシュは3600(1時間)のTTL(有効期間)を設定します。

以降: Moodle 2.7( MDL-44070
構成要素/区域:空室状況、スコア
成長:
ですか?
優先度:

YUIモジュールの定義

JSキャッシュが有効になっているときにMoodle内で使用されるシフターYUIモジュールに関する情報をキャッシュします。

以降: Moodle 2.5( MDL-38391
コンポーネント/エリア:コア、yuimodules
成長:修正、コアとプラグイン内のMoodle YUIモジュールの数。これはアップグレード中、またはプラグインのインストール/削除中にのみ変更されます。
誰が:これは、Moodle YUIモジュールがページ上で使用されているときに使用されます。これは2.8以降のほとんどのページです。
優先度: 5

高度なマルチサーバーサイトに関する注意事項

  • 共有キャッシュが必要です。

セッションキャッシュ

ここにキャッシュされたデータは、サイトを閲覧しているユーザーのものです。

特定のユーザーのコースカテゴリリスト

現在のユーザーに表示されるコースカテゴリのデータを格納するために使用されます。カテゴリのリストを閲覧するのに役立ちます。
これはコースカテゴリ管理中にも使用されます。

以降: Moodle 2.5( MDL-38147
コンポーネント/エリア: core、coursecat
成長:ユーザーが見ることができるサイト上のカテゴリとコースの数は、現在のユーザーのためのこのサイズを決定します。
誰が:それは、いくつかのフロントページ要素の中で使われています。

高度なマルチサーバーサイトに関する注意事項

  • 共有キャッシュが必要です。
  • changesincoursecatまたはchangesincourseイベントがトリガーされたときに無効になります。

Moodle全体でユーザ選択を持続させるために使用されるデータ

ユーザーがログインしている間存続する必要があるユーザー選択をキャッシュします。これには、コースカテゴリ管理ページでユーザーがどのカテゴリを展開したかなどが含まれます。
それらはユーザーの好みのようだが寿命が限られていると考えてください。

以降: Moodle 2.6( MDL-42299
コンポーネント/エリア:コア、ユーザー選択
成長率:指数関数的であり、ユーザーがカテゴリの拡大などの操作をどの程度行うかによって異なります。
誰:ログインユーザー

フォルダ名キャッシュ[repository_skydrive]

以降: Moodle 2.6( MDL-30740
コンポーネント/エリア: repository_skydrive、フォルダ名
成長:
ですか?
優先度:

キャッシュを要求する

ここでのキャッシュはリクエストの存続期間だけ存続し、閲覧しているユーザーのみが利用できます。

コースカテゴリレコード

ユーザーに表示されるコースカテゴリのリストをキャッシュします。

以降: Moodle 2.5( MDL-38147
コンポーネント/エリア: core、coursecatrecords
成長:修正、ユーザーに見えるサイト上のカテゴリの数がこれを決定します。
誰:みんな

高度なマルチサーバーサイトに関する注意事項

  • コースカテゴリのレンダリング中にこれにアクセスします。
  • changesincoursecatイベントがトリガーされたときに無効になります。
  • ローカルキャッシュが必要です。

ヘルパーキャッシング[tool_uploadcourse]

以降: Moodle 2.6( MDL-13114
コンポーネント/エリア: tool_uploadcourse、ヘルパー
成長:
担当管理者
優先度:

リポジトリインスタンスデータ

リポジトリーをロードするためのデータベース呼び出しの繰り返しを避けるために、構成済みのリポジトリーにデータをキャッシュするために使用されます。

以降: Moodle 2.5( MDL-34346
コンポーネント/エリア:コア、リポジトリ
成長:
Who: 1つ以上のアクセス可能なリポジトリでユーザーをログインさせました。
優先度:

高度なマルチサーバーサイトに関する注意事項

  • ローカルキャッシュが必要です。

詳しくは

関連情報

  • MDL-59142 - 後処理されたCSSをMUCにキャッシュする