=== warmup.rocks – Global CDN Cache Warmer & Edge Monitor ===
Contributors: swissky
Tags: cache warmer, cloudflare, cloudfront, fastly, bunnycdn
Requires at least: 6.4
Tested up to: 7.0
Requires PHP: 8.0
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Warm pages across global CDN edges after updates. Track cache hits by location for Cloudflare and other CDNs.

== Description ==

A visitor in Zurich and a visitor in Singapore do not use the same CDN cache. One location may return a fast cache hit while another still has to contact your origin.

warmup.rocks connects WordPress to a managed cache warmer. After you publish or update public content, the plugin asks warmup.rocks to request your sitemap URLs from distributed locations. The run records which CDN edge answered and whether it returned a HIT, MISS, BYPASS, or another cache status.

It works with **Cloudflare, Amazon CloudFront, Fastly, Akamai, bunny.net, and CDN77**. Detection uses the response headers each CDN already sends. Other CDNs can still be warmed, but their provider and edge location may appear as unknown when they do not expose recognizable headers.

You do not need to install a proxy list, run a crawler inside WordPress, or deploy your own Cloudflare Worker. warmup.rocks handles the remote requests. The WordPress plugin stays small and only sends a trigger when the site changes.

The plugin:

* groups quick edits for 90 seconds before requesting a run;
* reacts to published posts, pages, products, taxonomies, themes, and plugins;
* adds a manual Warm now action;
* shows project and latest-run status in WordPress;
* detects and securely syncs same-site WordPress core or Yoast sitemap URLs;
* sends no post content, customer data, WordPress credentials, or visitor cookies.

A warmup.rocks account and project are required. The remote service performs the cache-warming requests and may require a paid plan. The plugin does not make private pages public, change cache headers, or weaken WooCommerce safety rules.

== Installation ==

1. Upload the `warmup-rocks` directory to `/wp-content/plugins/`, or install the ZIP in Plugins > Add New.
2. Activate the plugin.
3. In warmup.rocks, open the project settings and create a Deploy Hook.
4. In WordPress, open Settings > warmup.rocks and paste the Deploy Hook URL.
5. Save and use Warm now to test the connection.

== External service ==

This plugin connects to `https://warmup.rocks` when an administrator checks status, starts a manual run, or when a scheduled automatic warming request is due.

Data sent: plugin version, the public site URL, detected same-site sitemap URLs, a short change reason such as `content` or `site`, and the secret token contained in the Deploy Hook URL. No post content, customer data, WordPress credentials, or visitor cookies are sent.

Service terms: https://warmup.rocks/terms
Privacy policy: https://warmup.rocks/privacy

== Frequently Asked Questions ==

= Which CDNs does it support? =

warmup.rocks recognizes cache and edge headers from Cloudflare, Amazon CloudFront, Fastly, Akamai, bunny.net, and CDN77. It can send warming requests to other CDNs too, but detailed provider or edge reporting depends on the headers returned by that CDN.

= Is this only a Cloudflare cache warmer? =

No. Cloudflare is supported, but it is not required. The same WordPress trigger works with CloudFront, Fastly, Akamai, bunny.net, CDN77, and other CDN setups that cache your public pages.

= Do I need a Cloudflare Worker or my own proxies? =

No. The warming run happens on warmup.rocks, outside WordPress. You do not have to deploy a Worker, buy a proxy plan, or keep a long crawler process running on your web server.

= Does this plugin cache pages inside WordPress? =

No. It asks warmup.rocks to visit public URLs from your sitemap through distributed locations. Your CDN decides whether a response can be cached. If the CDN returns BYPASS or DYNAMIC, the dashboard reports that instead of claiming the page was warmed.

= Is WooCommerce supported? =

Yes, when the CDN already excludes carts, checkout, accounts, logged-in sessions, and other private responses. The plugin does not weaken those exclusions.

= What happens after several quick edits? =

The plugin groups changes for 90 seconds. warmup.rocks also enforces a server-side cooldown, so repeated edits do not create a run for every save.

== Screenshots ==

1. Connect a warmup.rocks project, control automatic warming, and review detected sitemaps.
2. Confirm the searchable plugin name, version, and author in the WordPress plugin list.

== Upgrade Notice ==

= 1.0.0 =
Initial public release. Connect with a revocable Deploy Hook URL.

== Changelog ==

= 1.0.0 =
* First stable release: managed global CDN cache warming, change triggers, sitemap sync, manual runs, and project status.
