Page 20 - Web Performance
-
Maxim Mironjuk
-
June 06, 2025
Before using ReactPHP or Swoole in production, it is worth looking at what actually happens underneath. Non-blocking I/O in PHP relies on the same operating system primitives as in any other language: sockets running in non-blocking mode, and stream_select signaling which sockets are ready. Understanding these fundamentals means every async framework becomes clear at a glance.
-
Maxim Mironjuk
-
May 30, 2025
A video embed without a fixed aspect ratio shifts the entire layout while it loads, and it costs Core Web Vitals points. Tailwind CSS's aspect-ratio utilities solve this problem cleanly, responsively and without a padding hack. This article shows every pattern, from 16:9 to fully custom ratios.
-
Maxim Mironjuk
-
May 28, 2025
Editors keep adding images, sliders and nested containers to Page Builder pages over months, without performance staying in view. With targeted lazy loading, critical CSS for the visible area and consistent image optimization, Page Builder content stays fast and Core Web Vitals capable even as it grows.
-
Maxim Mironjuk
-
May 27, 2025
A powerful developer laptop with CPU throttling enabled in Chrome DevTools feels like solid low-end testing, but it only approximates the reality of a genuine budget Android phone. Thermal throttling, real memory limits, slow storage, and background processes from other apps are nearly impossible to simulate at a desk. Teams that take performance regressions for their real user base seriously cannot avoid physical test devices or cloud device farms.
-
Maxim Mironjuk
-
May 26, 2025
For years, set operations in JavaScript had to be laboriously assembled with filter() and has(). The new JavaScript Set Methods solve this problem with a clean, readable API, directly on the Set object, without external libraries and without workarounds.
-
Maxim Mironjuk
-
May 26, 2025
An ordinary PHP array is internally an ordered hash table with considerable overhead per element, even when only sequential integer keys are used. SplFixedArray, SplStack, SplQueue and SplHeap provide specialized, memory-efficient data structures that noticeably reduce that overhead for large, clearly structured data volumes.
-
Maxim Mironjuk
-
May 21, 2025
The query optimizer does not decide based on SQL text alone, but based on statistics about data distribution, which can go stale as tables grow. Understanding statistics and query plan cache immediately explains why an unchanged query suddenly gets a different, significantly slower execution plan after data growth.
-
Maxim Mironjuk
-
May 16, 2025
Scroll, resize, and input events fire hundreds of times per second and can bring the main thread to a crawl if every call triggers an expensive function unchecked. Debouncing and throttling tame this flood deliberately, with clear timer mechanics, rAF-based patterns for visual updates, and ready-made Alpine.js modifiers for Hyva themes.
-
Maxim Mironjuk
-
May 14, 2025
useFetch is, at its core, a convenience wrapper around useAsyncData combined with $fetch. As soon as custom transform functions, precise caching keys, or a data source more complex than a plain HTTP request come into play, reaching for useAsyncData directly is usually the clearer choice.
-
Maxim Mironjuk
-
May 13, 2025
Tailwind's content scanning promises that only actually used classes end up in the final CSS. In practice, unused Tailwind classes still accumulate, through removed components, oversized safelists, and dynamically composed class names that scanning can never classify as safe in the first place.
-