ビューはコアキャッシュメカニズムを介してキャッシュされますか、または各ビューでキャッシュを直接設定する必要がありますか?


23

各ビューにキャッシュ設定があります。これらを設定する必要がありますか、または/ admin / config / development / performanceのコアキャッシングメカニズムがこれの一部を自動的に実行し、ビューのこれらの「余分な設定」はdrupalコアのデフォルトのキャッシング動作をオーバーライドする場合ですか?

ここに画像の説明を入力してください


私はこの正確な質問に興味があります。ビュー固有のキャッシュ設定は、Drupal Coreパフォーマンスキャッシュ設定をオーバーライドしますか?論理的には、そうだと思いますが、必ずしもそうとは限りません。
デビッドCsonka

私はこれをもっとよく理解したいと思っているので、これに賞金をかけました。
デビッドCsonka

回答:


38

内容:コアパフォーマンスキャッシングは、URLのキャッシュIDでレンダリングされたページ全体を保存および提供します。ビューのキャッシュはこれを超えて、ビューの出力のみをキャッシュします。

理由ログインユーザーに最適です。ページ上の他のブロックはより動的な場合がありますが、ビューはすべてのユーザーに対して毎回クエリを実行する必要はありません。

設定:「レンダリングされた出力」をクエリよりも新鮮にすることは、コンテンツを新規としてマークする場合や、単に一致させる場合に役立ちます。

大きな画像: Drupalはページを動的に提供し、サーバーを使用してPHPでページを構築し、データベース(またはメモリ内キャッシュ)にアクセスします。これにより、優れた機能とコンテンツエディターの高速化が可能になりますが、キャッシングを理解して適切に行うことがトレードオフになります。

モジュール!

また、コンテンツの編集時にビューキャッシュをクリアする素敵なビューコンテンツキャッシュモジュールもあります。さらに先に進みたい場合は、キャッシュアクションもチェックアウトすることをお勧めします。これを調整するルールをお勧めします。

さらに、Blockcache Alterでは、サイトの各ブロックに「ロールごと」、ページ、ユーザーなどのキャッシュオプションを設定できます。

ページマネージャーパネルを追加することもできます。これにより、キャッシュを「ユーザーごと」、「ロールごと」に設定したり、その他の非常に便利な構成を設定したりするなど、興味深いことができます。個人的にはパネルを避けていますが。

ドキュメント:キャッシュとパフォーマンス全般については、Drupal.orgページをご覧ください


この答えは本当に良いです。アップ投票。ページマネージャーとパネルに関するセクションを追加しましたが、答えはほぼ完成しました。
レサリオン

ビュー固有のキャッシュを機能させるには、コアパフォーマンスの「ブロックキャッシュ」を有効にする必要がありますか?
デビッドCsonka

ページマネージャー/パネルについて少し説明してくれてありがとう-これに対する賞金を加えた後、私はミニパネルキャッシングにも興味があることに気付きました。コアパフォーマンスの「ブロックキャッシング」がオーバーライドされるのか、ミニパネルの「シンプルキャッシング」を有効にするために有効にする必要があるのか​​疑問に思いました。
デビッドCsonka

1
ブロックキャッシュは、ページキャッシュと同じように、ビューのキャッシュ設定に関係なく、ブロック出力を実際にキャッシュします。ログアウトしたページキャッシュの有効期間が12時間の場合、これらのページは再びレンダリングされず、キャッシュから提供されるだけなので、ビューキャッシュは問題になりません。
-doublejosh

1
反対に、コアブロックキャッシュを有効にすると、Drupalはサイト全体のすべてのブロックに同じキャッシュ条件を課しますよね?Core Drupalブロックキャッシングは、ビューブロックキャッシング設定よりも優先度が高いのですか?一貫して更新する必要のあるコンテンツがない場合、これは良いシナリオのように思えます。
デビッドCsonka

4

ビューはDrupalキャッシュAPIを使用しますが、通常のDrupalページ/ブロックキャッシュとは関係のない独自のキャッシュを作成します。

ビューは、レンダリングされたビュー自体とともにビュー定義自体をキャッシュします。レンダリングされたビューは、クエリ結果またはビューの実際のHTMLの2つの方法でキャッシュできます。通常、これは最も効果的なパフォーマンスであるため、出力されたHTMLをキャッシュします。ログインしているユーザーに基づいて出力を変更したい場合には、クエリのキャッシュも非常に効果的です。

ビューを使用してキャッシュを保存するテーブルは次のとおりです。

  • cache_views
  • cache_views_data

したがって、admin / config / development / performanceでDrupal Core Blockキャッシング設定を無効にできますが、特定のビューはブロックキャッシュを個別に表示し、それらのビューブロックキャッシュは適切に動作しますか?
デビッドCsonka

1
@DavidCsonkaはい、できます。ブロックをキャッシュすると、ビューをキャッシュするよりも効果的ですが、わずかなマージンがあります。
googletorp

ああ、知っておくといい。しかし、Viewsキャッシュ設定のみを使用すると、Viewsブロックのキャッシュ方法をより正確に制御できますよね?代わりにコアブロックキャッシュを使用する場合、基本的にサイトのすべてのブロックに1セットのキャッシュ設定が適用されますか?正しい?
デビッドCsonka

1
ビューのキャッシュ(ブロックまたはページ)により、結果リストセットのキャッシュを制御できます。ブロックキャッシュは、ブロック全体の出力に関するものです。はい、コアブロックキャッシュはサイト全体の設定ですが、ブロックキャッシュ変更を使用して、ブロックごとに非常にきめ細かく変更できます。
-doublejosh

3
@doublejosh Drupal 7では、ブロックキャッシュの動作方法をサイト全体で、ロールごと、ページごとに定義できます。ページユーザーは私が信じているオプションです。より高いレベルでキャッシュするため、パフォーマンスがより効果的です。
googletorp

3

公開されたフォームを持つビューを除き、すべてのビュー(クエリ結果と出力)を自動的にキャッシュするビューキャッシュブリーと呼ばれる興味深いモジュールが利用可能になりました。このモジュールでは、キャッシュからビューを手動で除外することもできます。これにより、すべてのビュー(除外されたビューを除く)の中心点からのキャッシュ設定が可能になります。


2

Drupal 7はページキャッシュを提供しますが、ページキャッシュは匿名ユーザーに対してのみ機能し、ビューをキャッシュしません

ただし、ビューのキャッシュは匿名ユーザーとログインユーザーの両方で機能します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.