Drupal 8'de iki düzey önbellek, sayfa önbelleği ve dinamik sayfa önbelleği bulunur.
Evet, dinamik sayfa önbelleğini @ 4k4'ten bahsettiğimiz gibi engelleyebilirsiniz. Karşılaştığınız sorunun sayfa önbelleğini durdurma olasılığı daha yüksektir. Anahtar burada .
Bunun için birkaç çözüm var:
'HttpKernelInterface' uygulayan yeni bir sınıf ekleyin ve 'http_middleware' i 200'den yüksek önceliğe kaydedin (280 yapacaktır). Referanslar için bkz. 'PageCache' sınıfı ve uygulamaları.
'ServiceProviderBase' öğesinden genişleterek varolan 'PageCache'i değiştirmek için yeni bir sınıf oluşturun. Buradaki referanslar için buna göz atın . Ardından, 'PageCache'i genişletmek için yeni bir sınıf oluşturun.
Kod referansları:
Bu 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');
}
}
Bu 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;
}
}
Umut yardımcı olur.