A cart price rule is a marketing setting. Saving one should not touch the product catalogue. On a store running Amasty’s promo modules, it did: every time a cart price rule was created, and often when one was saved, Amasty Banners Lite asked Magento to drop every page that shows a product from the full page cache.
Each of those pages is then rendered from scratch on the next visit. Do that across a whole catalogue every time marketing adjusts a promotion, and the server spends its time rebuilding cache instead of serving customers. This post explains where the cleaning came from and the patch we use on stores that do not use promo banners.

What Banners Lite Does on Every Rule Save
Amasty Banners Lite lets you attach a promotional banner to a cart price rule and show it on product pages. To store the banner settings, it registers save handlers on Magento’s sales rule entity, for create, update and delete. Those handlers run on every save of every cart price rule, whether or not a banner is configured.
In version 1.2.4, the save handler stores a small banner-rule record for the sales rule. When that record is new or has changed, it cleans the page cache for the products the banner applies to. Which products that is depends on a “show banner for” setting: specific SKUs, specific categories, or all products.
Why It Cleaned Everything
A rule without a banner never sets “show banner for”. The value is empty, and the cache code compares it with a PHP switch. PHP’s switch uses loose comparison, so an empty value matches the first case, 0, which is the constant for “all products”. The module then cleans the cache tag cat_p. On the storefront, Magento adds that tag for every product it renders, so it sits on every product page, every category listing and every page with a product widget. When Varnish is configured as the cache, the module also sends a purge request for that tag.
A new cart price rule always gets a new banner-rule record, so creating any rule cleared all of those pages from the full page cache. Saving a rule cleared it again whenever the banner-rule record changed. None of these rules had a banner.

The Fix
The store did not use promo banners at all, so the cleanest fix was to stop Banners Lite from writing anything when a rule is saved. Our patch removes its create, update and delete handlers from the module’s di.xml and keeps the read handler, so the rest of the module still loads without errors:
<item name="create" xsi:type="array">
- <item name="create_promo_banners_lite" xsi:type="string">Amasty\BannersLite\Model\SalesRule\SaveHandler</item>
</item>
After that, saving a cart price rule no longer touches the page cache.
When Not to Use It
- If you use promo banners, do not apply this patch. Banner settings will no longer be saved. A narrower fix for you is to skip the cache cleaning when no banner is configured, or to treat an empty “show banner for” value as “no products” rather than “all products”.
- Check which modules depend on Banners Lite. It is installed as a dependency of other Amasty promo extensions. The patch leaves the module installed and its read handler active, so those modules keep working, but test the promotions you rely on.
How to Spot Cache Flushes Like This
- Watch the full page cache hit rate together with the admin activity log. A drop right after someone saves a rule, a CMS block or a configuration value means the save is cleaning more than it should.
- Search your modules for cache cleaning on broad tags such as
cat_p,cat_corFPC, and check what triggers it. - Be suspicious of extension save handlers on core entities. They run for every save, not only when the extension’s own fields are used.
This is one entry in our collection of Magento performance patches. Cache behaviour after admin changes is part of what we review in Magento support work.
Download the Patch
The patch targets amasty/module-banners-lite 1.2.4. It is provided as-is: read it, check that you do not use promo banners, and test it on staging before production.
amasty-banners-lite-stop-cache-flush-on-sales-rule-save.patch on GitHub · raw file
All our patches, with a short guide to applying them, are in the paxento/magento-patches repository on GitHub.
The full diff:
diff --git a/etc/di.xml b/etc/di.xml
index 43bb473..dd10528 100644
--- a/etc/di.xml
+++ b/etc/di.xml
@@ -39,16 +39,13 @@
<argument name="extensionActions" xsi:type="array">
<item name="Magento\SalesRule\Api\Data\RuleInterface" xsi:type="array">
<item name="create" xsi:type="array">
- <item name="create_promo_banners_lite" xsi:type="string">Amasty\BannersLite\Model\SalesRule\SaveHandler</item>
</item>
<item name="update" xsi:type="array">
- <item name="update_promo_banners_lite" xsi:type="string">Amasty\BannersLite\Model\SalesRule\SaveHandler</item>
</item>
<item name="read" xsi:type="array">
<item name="read_promo_banners_lite" xsi:type="string">Amasty\BannersLite\Model\SalesRule\ReadHandler</item>
</item>
<item name="delete" xsi:type="array">
- <item name="delete_promo_banners_lite" xsi:type="string">Amasty\BannersLite\Model\SalesRule\DeleteHandler</item>
</item>
</item>
</argument>
