Critical Performance Regression
-
Critical Performance Regression: Resource Exhaustion and Asset Bloat in ProfileGrid
Dear ProfileGrid Development Team,
I am writing this not just as a user, but as a developer concerned about the current architecture of your plugin. After a deep dive into my server logs and performance profiling, I feel compelled to highlight some “architectural sins” that are, frankly, embarrassing for a top-tier WP solution in 2026.1. The “Death by AJAX” Polling Model
Your messenger module uses a primitive long-polling approach via
admin-ajax.php(specifically thepm_get_messenger_notificationaction) with an aggressive interval of 3–5 seconds.- The Technical Reality: Every single poll bootstraps the entire WordPress core, loads all active plugins, and initializes the theme. On a site with even moderate traffic, this creates a massive overhead on PHP-FPM workers, leading to inevitable L7 resource exhaustion.
- The Solution: In an era of REST API and WebSockets, relying on synchronous
admin-ajaxcalls for a “background” notification system is a relic of 2015. It’s a silent server-killer.
2. Global Asset Injection (Bloatware approach)
ProfileGrid seems to operate under the assumption that it is the only plugin on the site. Your JS and CSS files are enqueued globally across the entire frontend, regardless of whether a ProfileGrid shortcode or functionality is present on the page.
- The Impact: Loading your heavy UI assets on a clean SEO-optimized blog post increases the DOM size and triggers significant “Total Blocking Time” (TBT) and “Largest Contentful Paint” (LCP) regressions.
- The Scientific Critique: This is a violation of the Principle of Least Privilege in asset management. Conditional loading (
wp_dequeue_script) shouldn’t be the user’s job; it should be the plugin’s default behavior.
Conclusion
We are building high-performance, modular systems. Seeing a plugin “spam” the server logs with 200-OK responses that do absolutely nothing but consume CPU cycles is disappointing. It forces developers to either gut the plugin’s code or disable core features (like Messaging) just to keep the server alive.
I strongly urge you to reconsider your asset enqueuing logic and move away from legacy AJAX polling toward a more modern, event-driven architecture.
Best regards
You must be logged in to reply to this topic.