web-dev-qa-db-ja.com

ビューがキャッシュされているかどうかを確認するにはどうすればよいですか?

私は、固定値ではないコンテキストフィルターを追加するとすぐに、ビューが動的になるため、ビューが到達不可能になると思いますか?

ビューがキャッシュされるかどうかを明確に区別する方法はありますか?

3
No Sssweat

私は、固定値ではないコンテキストフィルターを追加するとすぐに、ビューが動的になるため、ビューが到達不可能になると思いますか?

番号。

これは、ビューの出力がURLによって異なることを意味します。具体的には、クエリ引数。

Drupal 8にキャッシュコンテキストの概念があるのはこのためです: https://www.drupal.org/developing/api/8/cache/contexts

Viewsモジュールが、ビューがキャッシュされたバージョンを持つことができるかどうかを効率的に判断するには、特定のビューの表示がどのコンテキストで変化するかを事前に知る必要があります。したがって、変更されたビューを保存すると、Viewsモジュールは、特定のビュー表示が使用するすべてのプラグインを反復処理し、そのキャッシュ可能性メタデータを収集します。次に、それをview構成エンティティに格納します。

具体例:Drupal 8コアで出荷される「分類用語」ビュー。これには/taxonomy/term/%のパスがあり、%は特定の分類用語IDです。 core/modules/taxonomy/config/optional/views.view.taxonomy_term.ymlを開き、一番下までスクロールすると、次のように表示されます。

page_1:
    id: page_1
    display_title: Page
    display_plugin: page
    position: 1
    display_options:
      query:
        type: views_query
        options: {  }
      path: taxonomy/term/%
      display_extenders: {  }
    cache_metadata:
      contexts:
        - 'languages:language_interface'
        - url
        - 'user.node_grants:view'
        - user.permissions
      max-age: -1
      tags: {  }

urlキャッシュコンテキストの存在に注意してください。これは、このビューがURLによって、特に% URLの/taxonomy/term/%ワイルドカードの値によって異なることを示しています。

5
Wim Leers

有効にすると、キャッシュを無効にする特定のfield/filter/sort/...プラグインに依存しない限り、ビューは常にキャッシュされます。たとえば、ランダムな並べ替え。

フィルター、引数、およびその他の多くのコンテキストは、キャッシュキーを定義するときに考慮されます。

エクスポートされたymlファイルの計算されたキャッシュ可能なメタデータを確認することで、ビューがキャッシュ可能かどうかを確認できます。

3
Berdir

HTTP応答ヘッダー内のキャッシュステータスを読み取ることができます。

ケース:キャッシュが有効

$ curl -I   d8.example.com/PathToYourView
HTTP/1.1 200 OK
...
X-Drupal-Dynamic-Cache: MISS

ケース:キャッシュが無効

$ curl -I   d8.example.com/PathToYourView
HTTP/1.1 200 OK
...
X-Drupal-Dynamic-Cache: UNCACHEABLE
3
augusto