Drupal 8 มีแคชสองระดับแคชหน้าและแคชหน้าแบบไดนามิก
ใช่คุณสามารถดักจับแคชหน้าแบบไดนามิกตามที่ @ 4k4 พูดถึง ปัญหาที่คุณพบมีแนวโน้มที่จะดักหน้าแคช ที่สำคัญคือในที่นี่
มีวิธีแก้ไขปัญหาบางประการสำหรับสิ่งนี้:
เพิ่มคลาสใหม่ซึ่งใช้ 'HttpKernelInterface' และลงทะเบียน 'http_middleware' ที่มีลำดับความสำคัญสูงกว่า 200 (280 จะทำได้) ดูคลาส 'PageCache' และการนำไปใช้งานสำหรับการอ้างอิง
สร้างคลาสใหม่เพื่อแก้ไข 'PageCache' ที่มีอยู่โดยขยายจาก 'ServiceProviderBase' ตรวจสอบนี้อ้างอิงที่นี่ จากนั้นสร้างคลาสใหม่เพื่อขยาย '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;
}
}
หวังว่าจะช่วย