=== SlowFinder ===
Contributors: cloudys
Tags: performance, profiler, debug, speed, cloudflare
Requires at least: 5.6
Tested up to: 7.0
Requires PHP: 7.2
Stable tag: 1.5.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Find which plugin is slowing your site. Profiles a page load and ranks plugins by time and queries. Works behind Cloudflare bot protection.

== Description ==

SlowFinder measures where your site spends its time during a front-end
request and attributes that time to the plugin (or theme, or WordPress core)
responsible for it.

During a profiled request the plugin wraps every registered hook callback in a
lightweight timer, records each callback's "self" time (excluding time spent
inside other callbacks it triggers) and the database queries it ran, then maps
the callback back to the plugin that defined it using PHP Reflection. Results are
averaged across samples and shown as a ranked table with bars.

= Two ways to run it =

* **Automatic** — the site makes background (loopback) requests to the page for
  you. Fastest, fully hands-off.
* **Manual** — the plugin sets a short-lived cookie in your browser and you open
  the page yourself. Because it profiles a genuine visit from your real browser,
  it works even when **Cloudflare bot fighting mode**, "Under Attack" mode, or a
  hardened host blocks automated loopback requests. No server-to-server request
  is made.

More info: https://slowfinder.com

== Installation ==

1. Install the zip via Plugins > Add New > Upload Plugin, then activate.
2. Go to **Tools > SlowFinder**.
3. Choose a page, number of samples, and a mode, then click the button.
   * Automatic: results appear when the background passes finish.
   * Manual: your page opens in a new tab; results appear here automatically once
     the visit is profiled.

== Frequently Asked Questions ==

= My site is behind Cloudflare bot fighting mode. Which mode do I use? =

Manual. It profiles your own browser visit, which passes Cloudflare like any
normal human visit, so no challenged loopback request is involved.

= Manual mode timed out =

Open the page while logged in to the same site in that browser. Logged-in
requests bypass full-page caches (Cloudflare and host) so PHP actually runs and
can be profiled. If your edge cache serves the page without hitting PHP, nothing
can be measured.

= Are the millisecond numbers accurate? =

They are inflated on purpose: adding a timer to every hook callback adds
overhead, so totals run higher than a real visit. Use the ranking and the "share
of measured time" column to find the offender, not the absolute figures.

= Does this profile plugin load time too? =

It measures time spent in hook callbacks (where most front-end overhead lives:
enqueuing assets, template_redirect, the_content, queries, wp_head/wp_footer).
Time spent purely including a plugin's files before any hook runs is not counted.

= Should I leave it active all the time? =

Profiling only happens during a scan you trigger, gated by a one-time token or a
cookie that only exists in your browser for ten minutes. Normal visitors are
never profiled.

== Changelog ==

= 1.5.0 =
* Renamed to SlowFinder. Official site: slowfinder.com.

= 1.4.0 =
* Renamed to Super Profiler.

= 1.3.0 =
* Added a dismissible managed-hosting suggestion beneath the results.

= 1.2.0 =
* Renamed to Plugin Profiler.

= 1.1.0 =
* Added Manual capture mode that profiles your own browser visit, with no
  loopback request — works behind Cloudflare bot fighting mode.

= 1.0.0 =
* Initial release.
