Drupal 8には、ページキャッシュと動的ページキャッシュの2つのレベルのキャッシュがあります。
はい、@ 4k4が述べたように動的ページキャッシュをインターセプトできます。発生している問題は、ページキャッシュを妨害する可能性が高くなります。キーはここにあります。
これにはいくつかの解決策があります:
「HttpKernelInterface」を実装する新しいクラスを追加し、「http_middleware」を200より高い優先度で登録します(280で対応)。参照については、「PageCache」クラスと実装を参照してください。
「ServiceProviderBase」から拡張して、既存の「PageCache」を変更する新しいクラスを作成します。こちらで参考にしてください。次に、「PageCache」を拡張する新しいクラスを作成します。
ここにコード参照があります:
これはStaticCacheServiceProvider.phpです。
/**
* Modifies the language manager service.
*/
class StaticCacheServiceProvider extends ServiceProviderBase
{
/**
* {@inheritdoc}
*/
public function alter(ContainerBuilder $container)
{
// Overrides language_manager class to test domain language negotiation.
$definition = $container->getDefinition('http_middleware.page_cache');
$definition->setClass('Drupal\your_module\StackMiddleware\StaticCache');
}
}
これはStaticCache.phpです。
/**
* Executes the page caching before the main kernel takes over the request.
*/
class StaticCache extends PageCache
{
/**
* {@inheritdoc}
*/
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
{
// do special logic here.
$response = parent::handle($request, $type, $catch);
return $response;
}
}
願っています。