web-dev-qa-db-ja.com

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

各ビューにキャッシュ設定があることがわかります。これらを設定する必要がありますか、または/ admin/config/development/performanceのコアキャッシングメカニズムがこれの一部を自動的に実行しますか。ビューのこれらの「追加設定」は、drupalコア?

enter image description here

23
Nigel Waters

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

理由:ログインしているユーザーに最適です。ページ上の他のブロックはより動的な場合がありますが、ビューはすべてのユーザーに対して毎回クエリを実行する必要はありません...キャッシュの有効期限が切れたときにページキャッシュを生成する臨時のユーザーのみ。

SETTINGS:「レンダリングされた出力」をクエリよりも新しいものにすることは、コンテンツを新しいものとしてマークするなどの場合に役立ちます。それ以外の場合は単に一致させます。

大きな写真:Drupalサーバーを使用して動的にページを提供し、PHPでページを作成してデータベースにアクセスします(またはメモリ内キャッシュ)。これにより素晴らしい機能とコンテンツエディターの速度が可能になります...しかし、トレードオフはキャッシングを理解して正しく実行する必要があります。

モジュール!

また、コンテンツの編集時にビューのキャッシュをクリアする素敵な Views Content Cache モジュールもあります。さらに進んでみたい場合は、 キャッシュアクション も確認してください。これを微調整するには、 ルール をお勧めします。

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

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

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

38
doublejosh

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

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

ビューがキャッシュを格納するために使用するテーブルは次のとおりです。

  • cache_views
  • cache_views_data
5
googletorp

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

3
Dave Bruns

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

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

2
Guy Schneerson