モジュールにContentEntityクラスを作成していくつかのカスタムデータへのアクセスを設定したので、Drupalエンティティを介してそのデータをクエリおよび表示できます。ただし、そのデータは非Drupalによっても更新されますデータベースの一部の列を直接変更するサービス。そのサービスによってデータが変更された後、Drupalの変更を確認するには、「すべてのキャッシュをクリア」する必要があります。
Drupal 8がエンティティタイプをキャッシュしないようにするにはどうすればよいですか?常にデータベースから新しいフィールドをクエリしますか?
Entityクラスに注釈を付けてみました
render_cache = FALSE,
field_cache = FALSE
これらは documentation(Structure of an Entity Annotation) に記載されているキャッシュ関連のオプションであり、 フィールドのキャッシュを回避する方法エンティティビューでは? ただし、これは私のシナリオでは目立った効果はありませんでした。
あなたが探しているフラグはpersistent_cache
、field_cacheは使用されなくなりました。そのドキュメントは少し古くなっています。あなたはそれを更新することを歓迎します:)
最新のリストについては、 EntityTypeのAPIドキュメント クラスを参照してください。おそらく、そのドキュメントページは、重複したリストを維持するのではなく、単にそれにリンクする必要があります。
とは言っても、エンティティタイプへの書き込み/変更がロードと同じかそれ以上ない限り、アーキテクチャを変更し、APIを通じてエンティティタイプを更新するか、変更されたエンティティを無効にすることを検討します。ただし、それが意味をなさない場合もあります。大量の更新のため、およびそれらのエンティティがそれほど頻繁ではない場合。ただし、たとえば、常にロードする必要がある場合、ビューでの表示は非常に遅くなる可能性があります。
また、ビューについて言えば、render_cacheはエンティティの表示のキャッシュを無効にしますが、ビューの行レベルのキャッシュは無効にしないと思います。おそらくそれが必要な場合は、コアの問題を開くことを検討する必要があります。そうしないと、エンティティが変更されても、行はキャッシュされた出力を返します。