web-dev-qa-db-ja.com

Cookieの変更時に内部ページキャッシュを無効にする

特定のCookieの値が変更されたときに、匿名ユーザーの内部ページキャッシュを無効にする必要があります。どうすれば実装できますか?

追加しようとしました:

$build['#cache']['contexts'][] = 'cookies:my-cookie-name'

hook_entity_build_defaults_alter、しかしそれは助けにはなりません。そして、ページはまだキャッシュから戻ります。

3
qzmenko

キャッシュIDを形成するCookie値を追加して、PageCache::getCacheIdメソッドをオーバーライドする必要があります。

Cookieによるページキャッシュ の例をご覧ください。

1
hugronaphor

内部ページキャッシュはキャッシュコンテキストをサポートしていません。これは、静的データベースコンテンツを提供するように設計された単純なリバースプロキシであり、唯一のDrupal固有の機能は、キャッシュタグを無効にすることです。より動的な使用例では、このモジュールをアンインストールする必要があります。

動的ページキャッシュは、匿名トラフィックのフロントエンドキャッシュになります。ただし、Internal Page Cacheほど高速ではないため、必要なパフォーマンスが得られない場合は、Cookieを動的に処理できるサードパーティのリバースプロキシを検討してください。

3
4k4