Drupal 8 memiliki dua level cache, cache halaman dan cache halaman dinamis.
Ya, Anda dapat mencegat cache halaman dinamis seperti yang disebutkan oleh @ 4k4. Masalah yang Anda hadapi lebih cenderung mencegat cache halaman. Kuncinya ada di sini .
Ada beberapa solusi untuk ini:
Tambahkan kelas baru yang mengimplementasikan 'HttpKernelInterface' dan daftarkan 'http_middleware' dengan prioritas lebih tinggi dari 200 (280 akan melakukannya). Lihat kelas 'PageCache' dan implementasi untuk referensi.
Buat kelas baru untuk mengubah 'PageCache' yang ada dengan memperluas dari 'ServiceProviderBase'. Lihat ini untuk referensi di sini . Kemudian, buat kelas baru untuk memperluas 'PageCache'.
Berikut ini adalah referensi kode:
Ini adalah 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');
}
}
Ini adalah 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;
}
}
Semoga bisa membantu.