Chat on WhatsApp
CATEGORY

Performance

Magento 2 + Hyvä speed, Core Web Vitals (LCP/INP/CLS), TTFB tuning, indexer + cache strategy.

13 articles
Magento Development Magento 2.4.9 Magento 2 Product Images Not Showing: The Complete Fix

Magento 2 Product Images Not Showing: The Complete Fix

Grey placeholders, broken thumbnails, or 404s under /media/catalog/product/cache/ have a short, fixable list of causes. This guide works through each one fix-first for Magento 2.4.4 to 2.4.9: regenerating the resized cache, the 660 permission trap after a migration, missing originals, base media URL, CDN cached 404s, and wrong store-view or image roles.

Kishan Savaliya 9 min read
Headless & Architecture Magento Performance Magento API Performance: REST vs GraphQL Trade-offs Explained With Real Numbers

Magento API Performance: REST vs GraphQL Trade-offs Explained With Real Numbers

Most Magento REST vs GraphQL articles compare syntax. After benchmarking three real queries against a Magento 2.4.9 store with 50,000 SKUs, the answer flips depending on the call pattern: REST wins single-resource by URL (95 ms vs 140 ms), GraphQL wins relational and grid loads by an order of magnitude (180 ms vs 665 ms), and the FPC versus @cache directive story decides whether either survives Black Friday. Here is the curl trace, the wrk concurrency test, and the cache invalidation pattern from client work on Magento 2.4.4-2.4.9.

Kishan Savaliya 12 min read
Performance Magento Performance Magento `setup:static-content:deploy -f` Reusing Old Cache: The Wipe Sequence

Magento `setup:static-content:deploy -f` Reusing Old Cache: The Wipe Sequence

You edit a LESS file, push it to production, run `bin/magento setup:static-content:deploy -f en_US`, and the old CSS still serves. The deploy reports success in under two seconds. The browser still shows the old rules. The issue is not Cloudflare, not OPcache, not the browser, it is Magento reusing the preprocessor output cached under `var/view_preprocessed`. The `-f` flag clears `pub/static` but does not always touch `view_preprocessed`. This is the exact wipe sequence we run on every Magento 2.4.4-2.4.9 Hyvä store to force a true LESS-to-CSS recompile, why the order of operations matters, and the one-liner that catches the nested `_module.less` reused-output trap.

Kishan Savaliya 9 min read
Performance Magento Performance Magento Slow Category Page: The Indexer, EAV & JOIN Trap

Magento Slow Category Page: The Indexer, EAV & JOIN Trap

Most Magento 2.4.9 stores hit a visible wall the moment a category crosses ~5,000 products. The price index swells, the EAV join fan-out balloons, and a category that rendered in 400 ms now takes 1.8 seconds before TTFB even starts. After tuning 22 catalogs between 8k and 180k SKUs in 2025-2026, only three remediations consistently bring category page TTFB back under 250 ms: legacy flat catalog (yes, deprecated, still works under 50k SKUs), the Hyvä Catalog add-on, and a custom slim query for SKU-only listings. Here is the EXPLAIN ANALYZE for each, the millisecond numbers, and the SKU ceiling for each option.

Kishan Savaliya 11 min read
Performance Magento Performance Magento Core Web Vitals: The Actual LCP, INP & CLS Recipe

Magento Core Web Vitals: The Actual LCP, INP & CLS Recipe

Four real diagnoses from production Magento + Hyvä stores in 2026. LCP element pinned in DevTools Performance (usually the hero image or an H1 stuck in font-swap), a 10 KiB inline critical CSS budget, a 1200w / 800w / 480w WebP <picture> matrix, INP traced to a 3-second Knockout boot on Luma checkouts, and CLS killed by reserving min-height on the cookie banner. Real Lighthouse JSON excerpts, a recipe checklist, and the mobile P=52 → P=88 numbers that came out the other side.

Kishan Savaliya 11 min read