=== Nolimit Cache ===
Contributors: kristianwind
Tags: cache, performance, woocommerce, redis, page cache
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.1.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Full-page caching, asset optimisation, a Redis object cache and database upkeep — for WordPress and for WooCommerce, with an assistant that explains what it finds.

== Description ==

A cache plugin that says what it is doing and what each setting costs.

**Page cache.** Finished pages are written to disk and served before
WordPress, the theme or any plugin has loaded. The rules that keep that safe
are not optional: nobody signed in, nobody with a comment cookie, nobody with
anything in a basket, and never a page that did not finish rendering.

**WooCommerce awareness.** The basket, the checkout and the account pages are
excluded — found from WooCommerce's own page settings rather than guessed from
English slugs, because a Danish shop's checkout is at /kasse/. A product's page
is cleared when its stock changes or when somebody buys it, and a page built
for a visitor who already has something in their basket is never stored.

**Object cache.** An optional Redis drop-in for WordPress's own internal
lookups. On a shop this is often worth more than the page cache, because it
speeds up the pages the page cache is never allowed to touch. Clearing it is
scoped to this site, so it cannot empty another site sharing the same Redis.

**Front-end optimisation.** HTML minification, stylesheet minification,
deferred and delayed JavaScript, fewer of WordPress's default extras. All off
by default, and each option states its cost as well as its benefit. There is
deliberately no JavaScript minification and no file concatenation; the plugin
explains why on the screen where you would look for them.

**Preloading.** A crawler walks the site's own sitemap in small batches so no
visitor is the one who pays for building a page.

**Database upkeep.** Revisions, auto-drafts, spam, expired transients,
abandoned WooCommerce sessions — each one counted before anything is deleted,
and a report of the autoloaded options that are read on every single request.

**Measurements, not claims.** Every request is counted, so the hit ratio on the
dashboard is measured rather than sampled, and each skipped request records
*why* it was skipped. A built-in probe times the same page with and without the
cache.

**An optional assistant.** Point it at OpenAI, Anthropic, DeepSeek, Groq,
Mistral, OpenRouter, Together, or anything else that speaks the OpenAI chat
format — including Ollama or LM Studio running on your own server, where
nothing leaves the machine at all. It reads the plugin's measurements and says
what it would change, at one of four levels from "advise only" to "change cache
settings and record how to undo it". It is off until you switch it on.

== Privacy ==

The plugin contains no analytics, no tracking and no phone-home. It makes two
kinds of outbound request and no others:

1. An update check: one unauthenticated GET for the latest release of the
   repository named in the plugin header. Nothing identifying the site is sent,
   and the user agent is overridden because WordPress's default one contains
   the site's own web address.
2. If — and only if — you configure the assistant: a request to the endpoint
   you chose. The site's name and address are not included. Email addresses, IP
   addresses and anything shaped like an API key are removed before sending.
   The exact text that would be sent can be read in wp-admin before it is sent,
   and it is assembled by the same code that sends it, so the preview and the
   request cannot differ.

== Installation ==

1. Upload the plugin and activate it.
2. Follow the five-step guide it offers. It checks whether the site can cache
   at all before changing anything, measures the site as it is, and then
   switches the cache on.
3. Updates arrive through wp-admin like any other plugin's.

== Frequently Asked Questions ==

= Why is nothing being cached? =

Almost always one of three things, and the dashboard names which: wp-config.php
does not define WP_CACHE, wp-content is not writable, or another cache plugin
already owns wp-content/advanced-cache.php. This plugin never overwrites
another plugin's drop-in.

= Why is my hit ratio low on a shop? =

Usually because it should be. A visitor with something in their basket is
always served a fresh page, and on a busy shop that is a large share of the
traffic. The dashboard reports skipped requests separately from misses, with
the reason for each, so the number you are looking at is the one you can act
on.

= Does it work without WooCommerce? =

Yes. WooCommerce support switches itself on when WooCommerce is there.

= Can I use it with nginx? =

Yes. The page cache is served by PHP, so it does not need any server
configuration. The browser-caching rules cannot be written automatically on
nginx — the plugin gives you the snippet to hand to whoever administers the
server.

== Changelog ==

= 0.1.0 =
First release.
