Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions Observer/AddClearSiteDataHeader.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

declare(strict_types=1);

namespace MageOS\ThemeOptimization\Observer;

use Magento\Framework\App\Response\HttpInterface;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;

/**
* Stale speculative loads can be cleared using the `prefetchCache` and `prerenderCache` value of the `Clear-Site-Data` response header.
* See [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Clear-Site-Data#prefetchcache)
*/
class AddClearSiteDataHeader implements ObserverInterface
{
public function execute(Observer $observer): void
{
/** @var HttpInterface|null $response */
$response = $observer->getResponse();

if (!$response) {
return;
}

$response->setHeader(
'Clear-Site-Data',
'"prefetchCache", "prerenderCache"',
true
);
}
}
13 changes: 13 additions & 0 deletions etc/events.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<!-- Clear the prefetch & prerender cache after a product is successfully added to the cart -->
<event name="checkout_cart_add_product_complete">
<observer name="clear_site_data_header_add" instance="MageOS\ThemeOptimization\Observer\AddClearSiteDataHeader"/>
</event>
<!-- Clear the prefetch & prerender cache after a cart item is successfully updated -->
<event name="checkout_cart_update_item_complete">
<observer name="clear_site_data_header_update" instance="MageOS\ThemeOptimization\Observer\AddClearSiteDataHeader"/>
</event>
</config>