私は、固定値ではないコンテキストフィルターを追加するとすぐに、ビューが動的になるため、ビューが到達不可能になると思いますか?
ビューがキャッシュされるかどうかを明確に区別する方法はありますか?
私は、固定値ではないコンテキストフィルターを追加するとすぐに、ビューが動的になるため、ビューが到達不可能になると思いますか?
番号。
これは、ビューの出力が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/%
ワイルドカードの値によって異なることを示しています。
有効にすると、キャッシュを無効にする特定のfield/filter/sort/...プラグインに依存しない限り、ビューは常にキャッシュされます。たとえば、ランダムな並べ替え。
フィルター、引数、およびその他の多くのコンテキストは、キャッシュキーを定義するときに考慮されます。
エクスポートされたymlファイルの計算されたキャッシュ可能なメタデータを確認することで、ビューがキャッシュ可能かどうかを確認できます。
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