drupal 8のエンティティで機能するキャッシュコンテキストを追加できませんでした。具体的には、headers:User-Agentを使用します。モジュールで次のような多くのバリエーションを試しました。
use Drupal\node\NodeInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
function hook_entity_view_alter(&$build, EntityInterface $entity, EntityViewDisplayInterface $display){
if($entity->getType() == 'relevant_type'){
$build['#cache']['contexts'][] = 'headers:User-Agent';
}
}
そのコンテキストが変更されたときにノードアクセスをチェックするようにしています。hook_entity_build_defaults_alter()
関数でも試してみました。
キャッシュコンテキストは、ユーザーが持つノードアクセスに影響しないことに注意してください。キャッシュコンテキストは、データがキャッシュされるときに変更されるだけです。
—
kiamlaluno
hook_node_accessで設定されたノードアクセスがキャッシュされます。
—
ウンムリア語2016
これは、コンテンツに使用されるものではなく、別のキャッシュビンです。
—
kiamlaluno