=== Ostheimer Performance ===
Contributors: helpstring
Tags: cache, performance, page-cache
Requires at least: 6.8
Tested up to: 7.1
Requires PHP: 8.2
Stable tag: 0.1.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A small free HTML page cache with careful defaults and a clear WordPress interface.

== Description ==

An early, focused release of a local WordPress page cache. Test the setup and your website workflows before enabling it on a production site.

Stores eligible anonymous HTML locally. Cookies, query parameters, unverified forms, nonces and private responses remain dynamic. English/German interface. No account or service required. A verified public GET search-form profile can be cached; search results remain dynamic. No CSS/JS/HTML transformations.

Local caching and compatibility features are free. Optional services with ongoing operating costs may be considered later; none is included or required.

Cache storage must be writable and outside the document root. Another cache owner's drop-in is never replaced. Multisite and automatic proxy trust are not supported. A limited AdSimple Magazine/Aktivbau Child/AdSimple Client profile has passed isolated tests. Initial isolated profiles with Twenty Twenty-Five 1.5, Astra 4.14.0 and GeneratePress 3.6.1 have also passed cache/content-update checks. Other combinations, premium theme add-ons, consent, commerce, membership and multilingual modes require separate acceptance. Detected WPML, Polylang and TranslatePress are disabled until their adapters are verified.

== Installation ==

1. Back up affected configuration and identify existing page-cache ownership.
2. Install in an isolated WordPress test environment first, keeping the standard ostheimer-performance plugin directory name.
3. Set WP_CACHE to true and OSTHEIMER_PERFORMANCE_CACHE_DIR to a writable private directory outside the document root.
4. Open Settings > Ostheimer Performance and enable caching.
5. Verify MISS/HIT, visitor isolation and content invalidation before a pilot.

== Frequently Asked Questions ==

= Does this replace every WP Rocket feature? =

No. This version provides anonymous HTML page caching. It does not include asset optimization, image processing, CDN configuration or cache preloading.

= Which requests stay dynamic? =

Requests with cookies, query parameters or authentication; editor previews; REST, feeds and sitemaps; private responses; unverified forms and nonce-bearing pages. This conservative policy can reduce the cache hit rate on sites using visitor cookies.

= Does it require an account or send data to a service? =

No account is required. The cache stores eligible public HTML on the site's server and does not call an external service, collect visitor analytics or set cookies.

= Where are cache files stored? =

In a writable private directory outside the real web document root, configured using OSTHEIMER_PERFORMANCE_CACHE_DIR. Check the host's cleanup/retention policy before using temporary storage. If storage is unavailable, ordinary WordPress rendering continues; inspect setup status before re-enabling a recovered directory.

= Can another cache run alongside it? =

Use one owner for the page cache. This version refuses foreign advanced-cache.php files and detected competing page caches. It does not replace an object-cache.php drop-in or flush a Redis database.

= What does deactivation or uninstall remove? =

Deactivation disables caching and removes the verified owned reader. Uninstall additionally removes the plugin's options and verified owned cache files; unrelated files and directories are preserved. WP_CACHE and the private-directory constant in wp-config.php are not automatically changed.

= Is this suitable for every website? =

No. Version 0.1.1 is a small initial release with conservative exclusions. It needs a private writable cache directory and manual configuration. Shops, forms, membership, consent and multilingual modes require separate acceptance; detected unsupported language modes keep the engine disabled. A site pilot is not a general compatibility guarantee.

= Where can I get help? =

Product and agency information: https://www.ostheimer.at/ . Include WordPress/PHP versions, the active theme and plugins, setup status and the X-Ostheimer-Cache header when reporting an issue. Do not post credentials, private cached files or personal data.

== Screenshots ==

1. The cache dashboard with activation, lifetime, exclusions and local storage status.

== Changelog ==

= 0.1.1 =
* Copy the bundled fixed cache reader without generating executable PHP.
* Require the documented private-directory constant and preserve foreign readers during installation or upgrade.
* Clarify the author as Andreas Ostheimer / Ostheimer OG.

= 0.1.0 =
* Initial anonymous HTML cache, generation invalidation and original admin design.
* Conservative exclusions, private storage, owned drop-in and failure fallback.
* English source, German translations and test tooling.
* ManageWP bookkeeping integration and management-request bypass for the first owned-site pilot.
* Direct autoloader access protection, expanded release information and actual free-theme acceptance profiles.
* Validated bootstrap-specific document roots and authenticated settings, preserving encoded and international exclusion paths.
