{"id":381466,"date":"2026-10-14T08:32:22","date_gmt":"2026-10-14T08:32:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ostheimer-performance\/"},"modified":"2026-10-14T08:32:03","modified_gmt":"2026-10-14T08:32:03","slug":"ostheimer-performance","status":"publish","type":"plugin","link":"https:\/\/arg.wordpress.org\/plugins\/ostheimer-performance\/","author":414194,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.1","stable_tag":"0.1.1","tested":"7.1.3","requires":"6.8","requires_php":"8.2","requires_plugins":null,"header_name":"Ostheimer Performance","header_author":"Andreas Ostheimer \/ Ostheimer OG","header_description":"A small free HTML page cache with conservative visitor separation and clear diagnostics.","assets_banners_color":"193c34","last_updated":"2026-10-14 08:32:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.ostheimer.at\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"helpstring","date":"2026-10-14 08:32:03","revision":3745702}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3745702,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3745702,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3745702,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-de.png":{"filename":"banner-1544x500-de.png","revision":3745702,"resolution":"1544x500","location":"assets","locale":"de","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3745702,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-de.png":{"filename":"banner-772x250-de.png","revision":3745702,"resolution":"772x250","location":"assets","locale":"de","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3745702,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3745702,"resolution":"1","location":"assets","locale":"","width":1280,"height":1653}},"screenshots":{"1":"The cache dashboard with activation, lifetime, exclusions and local storage status."}},"plugin_section":[],"plugin_tags":[146,3853,247],"plugin_category":[52,54],"plugin_contributors":[88021],"plugin_business_model":[],"class_list":["post-381466","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-page-cache","plugin_tags-performance","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-helpstring","plugin_committers-helpstring"],"banners":{"banner":"https:\/\/ps.w.org\/ostheimer-performance\/assets\/banner-772x250.png?rev=3745702","banner_2x":"https:\/\/ps.w.org\/ostheimer-performance\/assets\/banner-1544x500.png?rev=3745702","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ostheimer-performance\/assets\/icon.svg?rev=3745702","icon":"https:\/\/ps.w.org\/ostheimer-performance\/assets\/icon.svg?rev=3745702","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ostheimer-performance\/assets\/screenshot-1.jpg?rev=3745702","caption":"The cache dashboard with activation, lifetime, exclusions and local storage status."}],"raw_content":"<!--section=description-->\n<p>An early, focused release of a local WordPress page cache. Test the setup and your website workflows before enabling it on a production site.<\/p>\n\n<p>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.<\/p>\n\n<p>Local caching and compatibility features are free. Optional services with ongoing operating costs may be considered later; none is included or required.<\/p>\n\n<p>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.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Back up affected configuration and identify existing page-cache ownership.<\/li>\n<li>Install in an isolated WordPress test environment first, keeping the standard ostheimer-performance plugin directory name.<\/li>\n<li>Set WP_CACHE to true and OSTHEIMER_PERFORMANCE_CACHE_DIR to a writable private directory outside the document root.<\/li>\n<li>Open Settings &gt; Ostheimer Performance and enable caching.<\/li>\n<li>Verify MISS\/HIT, visitor isolation and content invalidation before a pilot.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20every%20wp%20rocket%20feature%3F\"><h3>Does this replace every WP Rocket feature?<\/h3><\/dt>\n<dd><p>No. This version provides anonymous HTML page caching. It does not include asset optimization, image processing, CDN configuration or cache preloading.<\/p><\/dd>\n<dt id=\"which%20requests%20stay%20dynamic%3F\"><h3>Which requests stay dynamic?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20it%20require%20an%20account%20or%20send%20data%20to%20a%20service%3F\"><h3>Does it require an account or send data to a service?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"where%20are%20cache%20files%20stored%3F\"><h3>Where are cache files stored?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"can%20another%20cache%20run%20alongside%20it%3F\"><h3>Can another cache run alongside it?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20does%20deactivation%20or%20uninstall%20remove%3F\"><h3>What does deactivation or uninstall remove?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"is%20this%20suitable%20for%20every%20website%3F\"><h3>Is this suitable for every website?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20help%3F\"><h3>Where can I get help?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Copy the bundled fixed cache reader without generating executable PHP.<\/li>\n<li>Require the documented private-directory constant and preserve foreign readers during installation or upgrade.<\/li>\n<li>Clarify the author as Andreas Ostheimer \/ Ostheimer OG.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial anonymous HTML cache, generation invalidation and original admin design.<\/li>\n<li>Conservative exclusions, private storage, owned drop-in and failure fallback.<\/li>\n<li>English source, German translations and test tooling.<\/li>\n<li>ManageWP bookkeeping integration and management-request bypass for the first owned-site pilot.<\/li>\n<li>Direct autoloader access protection, expanded release information and actual free-theme acceptance profiles.<\/li>\n<li>Validated bootstrap-specific document roots and authenticated settings, preserving encoded and international exclusion paths.<\/li>\n<\/ul>","raw_excerpt":"A small free HTML page cache with careful defaults and a clear WordPress interface.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/381466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=381466"}],"author":[{"embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/helpstring"}],"wp:attachment":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=381466"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=381466"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=381466"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=381466"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=381466"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=381466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}