Free WordPress plugin, page cache included

Put WordPress on a diet.

Out of the box, WordPress loads scripts and services most sites never use, and it rebuilds every page from scratch for every visitor. DietPress applies proven performance optimizations the moment you activate it, caches your pages on disk when you want it to, and lets you switch off everything else, organized by risk level so you always know what's safe to remove.

+50Optimizations
63-71%Faster server response
100%Free forever

The Scale built into your dashboard

Bloat level: weighing…

Dropped today: emojis jQuery Migrate Dashicons shortlinks oEmbed

Things you can switch off with one click

Page cache

A page cache, in a free plugin

DietPress stores a copy of each page on disk and hands it to anonymous visitors without building it again. With the accelerator on, your own server can hand out that copy by itself, without starting PHP or WordPress at all. It is usually the single biggest speed gain a WordPress site can get, and it is what people normally buy WP Rocket, FlyingPress or a NitroPack subscription for.

Server response time without cache, with the page cache, and with the accelerator
PageOffPHPAcceleratorFaster
Home page112.3 ms13.7 ms3.0 ms97.3%
A blog post105.5 ms14.9 ms3.0 ms97.2%
WooCommerce shop117.2 ms14.9 ms3.8 ms96.8%

The percentage is not the interesting part. What matters is that the cached figures barely move, because serving a stored file costs the same whether the page was cheap or expensive to build, so the saving grows with the size of your site rather than with the power of your server. The accelerator also removes the start of WordPress itself, which is most of what a page served from the cache by PHP still costs. In the same test the home page went from about 17 visits a second without any cache to 159 with the page cache and 732 with the accelerator, more than 40 times as many, on exactly the same server.

Median of fifteen requests per URL on a local WordPress 7.1 install with Astra, WooCommerce and 29 active plugins, on PHP 8.5 and Apache; the visits per second come from 300 requests with ten in flight at a time. The only things that changed between the three columns were the page cache and accelerator switches. Your own hosting will give different figures, but the shape of the result will not change. A local install has no network latency, so in production the saving is usually larger rather than smaller, and none of this says anything about your Lighthouse score, which measures what the browser does after the page arrives.

Served by your server, not by PHP

With the accelerator on, Apache, LiteSpeed or nginx hand out the stored copy by themselves, without starting PHP or WordPress at all. It only stays on once a real test on your home page confirms it is actually working, and each stored copy still expires right on time.

No drop-in, no wp-config.php

It installs no advanced-cache.php and never writes a line to your wp-config.php. Switch it off and your install is exactly as it was, with nothing orphaned behind it.

WooCommerce-safe by design

Cart, checkout and my account are never cached, and neither is a visitor carrying a cart cookie, one who has unlocked a password-protected post, or one with a comment awaiting moderation. WooCommerce marks those pages itself and DietPress obeys the mark instead of guessing from the URL.

It tells you what it is doing

The Cache tab counts the stored pages and the disk they take, says when the cleanup last ran, and has a button that asks your site for its own home page as an anonymous visitor would, then reports whether it was served from disk, rebuilt or skipped.

It refuses to fight another cache

With W3 Total Cache, WP Super Cache, LiteSpeed, WP Fastest Cache, SiteGround Speed Optimizer or about thirty similar plugins active, the toggle stays disabled and names the one in the way. On hosting that already caches pages it explains the risk and asks for confirmation, and on LiteSpeed servers it points you at LiteSpeed Cache instead. If another plugin puts its own advanced-cache.php in charge later on, the engine stops at once and the Cache tab names who took over.

Purging you don't have to think about

Publishing, editing, deleting or renaming a post purges it along with the front page, the blog page, its archives and its author page, and a renamed slug also purges the old address. A new theme, menu, permalink structure or plugin update empties the whole cache.

Browser caching is yours to set. How long visitors keep your media, your styles and scripts and your fonts, each on its own and with its own switch, plus one for the ETag header and a master switch for caching and another for compression. All of that goes into your .htaccess one file type at a time, so feeds, robots.txt and anything else not on the list are left alone. Your pages get no rule at all by default, which leaves the decision to your hosting cache or your CDN. If you want a lifetime for the HTML, it is sent from WordPress when the page is built, so it works on nginx too, and it never touches the cart, the checkout, the account page or a page that already carries a Cache-Control header from another plugin. Only styles, scripts and fonts are marked immutable, because they carry a version in their URL while an image keeps its own when you replace it.
The problem

Your WordPress is carrying weight it doesn't need

Every default install ships with features designed for every possible site, which means yours is loading things it will never use.

Bloat by default

Emoji scripts, embeds, jQuery Migrate, dashboard widgets, RSD links… WordPress loads them on every visit whether you use them or not. Most sites never do.

Slow costs you visitors

Every extra request and kilobyte delays your LCP. Slow pages rank worse in Google, convert worse and burn hosting resources you're paying for.

Optimization got complicated

Most performance plugins hide the good parts behind a subscription, or hand you fifty switches with no explanation of what might break.

Two plugins in one

Performance on. Bloat off.

One half speeds your site up the moment you activate it. The other half is a set of switches to slim WordPress down, and it waits for you. Use one, the other, or both.

On by default

Performance optimizations

Activate the plugin and they're already working. Zero configuration, unless you want to fine-tune every detail.

  • Page cache: each page stored on disk and served to anonymous visitors, with an accelerator that lets the server serve it without starting PHP (opt-in)
  • Automatic critical CSS inlined in the header
  • Deferred JavaScript with smart dependency handling
  • Image loading safety net: lazy loading, decoding and fetchpriority
  • Automatic image dimensions for better CLS, picture elements included
  • Preconnect and DNS prefetch hints for common third parties
  • Theme stylesheet, critical fonts and logo preload for faster LCP
  • Google Fonts display=swap
  • Local Google Fonts hosting, GDPR-friendly (opt-in)
  • RSS feed cache headers and per-item limit
  • Browser caching with its own lifetime for media, styles and scripts and fonts, and no rule imposed on your HTML
  • GZIP and Brotli compression written to .htaccess, CORS for fonts and immutable headers for styles, scripts and fonts
  • Daily database cleanup of expired transients and safe query optimizations

Install, activate, done. The page cache, the local Google Fonts and the selective loading are the ones that wait for you to switch them on.

Opt-in, risk based

The WordPress diet

Dozens of switches to turn off what you don't use, each with a plain-language note on what it does and what could break.

  • Three diet levels (Light, Moderate, Strict), plus Widgets, Emails and Cache tabs
  • Safe wins at zero risk: emojis, RSD and WLW tags, shortlinks, self-pingbacks, comment pagination
  • Deeper cuts: heartbeat, revisions, autosave, XML sitemap, RSS feeds
  • Selective loading: eight modules make each plugin's assets load only where they are used
  • Widget cleanup for dashboard, block editor, sidebar and third-party plugins
  • Email control: update notices, comment moderation, account notifications
  • Nothing changes until you flip a switch yourself
  • Every option describes its risk before you touch it
  • Flip it back and WordPress returns to default behavior
  • Quick profiles apply a sensible set for your kind of site
  • The site analyzer recommends switches based on your active plugins and content

You stay in control. DietPress tells you the risk, you make the call.

Features

Everything the performance half does

Years of testing on real sites, every piece of it configurable, and a page cache of its own.

01

Page cache

Stores the finished HTML of each page on disk and serves it to anonymous visitors, with a gzip copy for browsers that ask for one and a scheduled cleanup of what has expired. Off by default, in its own tab.

02

Page cache accelerator

Lets Apache, LiteSpeed or nginx hand out a cached page by themselves, without starting PHP or WordPress at all. Only stays on once a real test on your home page confirms it is actually working, and switches itself off, with the reason on screen, the moment that stops being true.

03

Cache status and self-test

How many pages are stored and how much disk they take, when the cleanup last ran and when it runs next, and a button that requests your own home page as an anonymous visitor to confirm it is really being served from disk or straight from the server.

04

Automatic purging

Publishing, editing or renaming a post clears it and everything that lists it, comments clear their post, and a change of theme, menu, widget, permalink or plugin clears the lot. Plus a purge button and a dietpress_purge_page_cache() function.

05

Critical CSS

Automatic critical CSS inlined in the header for instant first paint, with an optional experimental mode that defers non-critical stylesheets.

06

Deferred JavaScript

Defers script loading with smart dependency handling, so render isn't blocked and nothing loads out of order.

07

Image loading safety net

Adds lazy loading, decoding=async, fetchpriority and missing width and height attributes (picture elements included) to images that slip past WordPress defaults, for better LCP and CLS.

08

Resource hints & preloads

Preconnect and DNS prefetch for common third-party origins, plus preload for your theme stylesheet, critical fonts and logo.

09

Browser caching & compression

A lifetime of your choosing for media, for styles and scripts, for fonts and for the HTML itself, an ETag switch, and GZIP, Brotli, CORS for fonts and immutable headers for styles, scripts and fonts. Two master switches, one for each half.

10

Selective third-party loading

Stops loading WooCommerce assets outside the store, Contact Form 7 assets on pages without forms and block library CSS on block-free pages. Formidable Forms and Everest Forms work the same way, while Slider Revolution, TablePress and Smash Balloon get the conditional loading each one already ships with switched on instead, so nothing can end up unstyled.

11

Database maintenance

Daily cleanup of expired transients and safe query optimizations that keep your database lean without risky deletions.

12

Fonts & feeds tuning

Google Fonts load with display=swap or straight from your own server with the local hosting option, GDPR-friendly, and RSS feeds get cache headers and a per-item limit.

13

Developer filters

More than twenty dietpress_* hooks to customize critical CSS, skip scripts from deferral, exclude fonts from local hosting, fine-tune selective loading and keep any page out of the cache.

The diet levels

Choose how strict your diet gets

Every switch is color-coded by risk, so the question is never «what does this do?» but «how far do I want to go?». The Cache tab sits next to these five with the page cache and the browser caching rules.

Light

Safe for any site

The easy wins. Nothing here should change how your site looks or works.

EmojisRSD & WLWShortlinksSelf pingbacksComment paginationLocal Google Fontsand more
Moderate

Evaluate first

Fine for most sites, as long as you check the feature isn't in use before switching it off.

oEmbedjQuery MigrateDashiconsGlobal stylesDuotoneBlock patternsAvatarsNested comments
Strict

Site-specific

Serious cuts for sites that know exactly what they need and what they don't.

RSS feedsHeartbeatRevisions & autosaveCommentsXML sitemapContent typesNative lazy loadingSelective loading
Widgets

Clean the clutter

Dashboard and editor widgets you never look at, third-party ones included.

Dashboard widgetsYoastWooCommerceElementorJetpackClassic sidebarBlock editorCustomizer
Emails

Silence the inbox

Control every automatic email WordPress sends your way. Nothing is disabled by default — enable only what you want to mute.

Core update resultsPlugin update resultsTheme update resultsComment moderationNew comment authorNew userPassword changeEmail changeAdmin email checkPost by email
Nothing is permanent. Every switch explains what could break before you touch it, flipping it back restores WordPress defaults, and deactivating the plugin reverts everything. No lock-in: your settings stay saved, so nothing is lost if you switch it back on.
The Scale

Weigh in whenever you want

A control center that shows what the diet is saving you and helps you decide the next step.

The Scale tab in DietPress with savings gauge, quick profiles and site analyzer

Savings gauge

HTTP requests removed, CSS and JS saved, and active optimizations, all at a glance, with the page cache status right beside them.

Quick profiles

Personal blog, WooCommerce store, landing page or maximum cleanup. One click applies a sensible preset you can adjust later, cache lifetime included: six hours for a store, twelve for the rest.

Site analyzer

Looks at your active plugins and your content, then recommends which switches make sense for your site, the cache engine, its gzip copy and the browser caching rules included.

Import & export

Move your whole configuration between sites as a JSON file. Handy if you maintain more than one WordPress.

Compatibility

Plays well with the rest of your stack

Everything DietPress does apart from its own page cache works alongside a cache plugin or a CDN, exactly as it always has. The page cache is the one exception, and it steps aside on its own when another one is already running. Want the detail? There is a full comparison against the nine best known rivals.

GutenbergDiviElementorBeaver BuilderBricksWP RocketLiteSpeed CacheW3 Total CacheWP Super CacheCloudflareKeyCDNWooCommerceSlider RevolutionTablePressSmash BalloonFormidable FormsEverest FormsMultisite

Multisite is supported everywhere except the page cache, which does not handle it yet and says so instead of misbehaving. Security toggles are left out on purpose: they belong in a security plugin. We recommend our free Vigilant.

FAQ

Common questions

What does a page cache actually do, and do I need one?

Every time somebody visits your site, WordPress queries the database, runs your plugins, builds the page from your theme and sends it. For a visitor who is not logged in the result is the same every time until you change something, so doing all of that again is wasted work. A page cache does it once and stores the finished HTML on disk, and the next visitor gets that file. You need one unless your hosting already provides it, and DietPress detects the usual managed hosts and tells you when that is the case.

Can I use it with my other cache plugin, or with my hosting cache?

With another page cache plugin, no, and DietPress will not let you: two page caches on the same site serve each other's stale HTML and the result is very hard to diagnose. If W3 Total Cache, WP Super Cache, LiteSpeed Cache, WP Fastest Cache, Cache Enabler, Surge, WP Rocket, SiteGround Speed Optimizer or any of about thirty similar plugins is active, the toggle stays disabled and names the one in the way. With a hosting cache (Kinsta, WP Engine, SiteGround, SpinupWP, Cloudways and others) it is possible but rarely a good idea, because purging one does not purge the other, so DietPress asks for an explicit confirmation first. If your hosting cache is one DietPress recognises, the browser caching options also warn you when the HTML lifetime you pick would stop it from storing your pages. On LiteSpeed servers we recommend LiteSpeed Cache instead, since caching at server level is faster than anything PHP can do. Object cache plugins such as Redis Object Cache are a different thing and are fine.

What is the accelerator, and should I turn it on?

The page cache normally serves its copy from PHP, once WordPress has loaded its plugins. That skips the database and the theme, but not the start of WordPress itself, and on a site with many plugins that start is most of what a cached page still costs. The accelerator removes that too: on Apache and LiteSpeed the server hands out the stored copy by itself, without starting PHP or WordPress at all, and on nginx you get the same rules to paste into your server configuration. It only stays on once a real test on your home page confirms the server is serving it correctly; if it isn't, the rules come out again and the Cache tab says why.

Does the accelerator bypass my security plugin?

Partly, and it's worth knowing how. The server answers before any PHP runs, so whatever a security plugin does in PHP (blocking an IP address, rate limiting, a bot filter) never sees those visits. The rules a security plugin writes to your .htaccess still apply, so a bot blocked there still gets its 403. If your site depends on the PHP side of a security plugin for anonymous visitors, leave the accelerator off; the page cache alone still answers earlier than most security plugins run their checks.

Is my WooCommerce store safe with the cache on?

Yes. WooCommerce marks the cart, the checkout and my account as uncacheable itself, and DietPress obeys that mark rather than guessing from the URL, so it keeps working if you move or rename those pages. On top of that, any visitor carrying a cart or session cookie is served the live site everywhere, so a mini cart in the header never shows somebody else's basket, and a store in coming soon mode is not cached at all. Logged in users are never cached either, and there is no option to change that.

Why is a page of mine not being cached?

Open the Cache tab and press «Test the cache now»: the site asks itself for its own home page and tells you whether it was served from disk, rebuilt or skipped. For one particular page, turn WP_DEBUG on and read the last line of its HTML source, where DietPress writes the exact reason. The three usual causes are a plugin that sets a cookie on every visit (a consent banner, some analytics scripts), a page that is genuinely personal, and a cache directory the server cannot write to, which the status panel reports on its own.

How were those speed figures measured, and can I repeat them?

On a local WordPress 7.0 install with GeneratePress, WooCommerce and a 76 product catalogue, on PHP 8.5. Each URL was requested twice to warm up and then fifteen times, and the median is what we publish; the throughput figure is 100 requests with ten in flight at a time. The only thing that changed between the two columns was the page cache switch. You can repeat it with any tool that reports time to first byte, for example curl -o /dev/null -w "%{time_starttransfer}\n" https://yoursite.com/ a dozen times with the cache off and a dozen with it on, comparing medians rather than single readings, and doing it while logged out because your own visits are never cached.

Is it really zero configuration?

If that's what you want, yes. The performance optimizations are on by default, so activating the plugin is enough. The settings page exists for when you want to fine-tune them or start the diet, which is entirely opt-in.

Will it break my site?

The performance optimizations are designed to be safe and have been tested across many sites for years. The diet switches only act when you turn them on, and each one describes what could be affected. If something looks off, flip the switch back and WordPress returns to its default behavior.

Where are the security options?

Left out on purpose. Security belongs in a security plugin, where those protections are properly implemented and maintained. We recommend our free Vigilant. If you migrate with any security toggle active, DietPress shows a one-time notice listing them.

And the rest of the plugin, does it still work next to a cache plugin?

Yes. Critical CSS, the JavaScript defer, the image attributes, local fonts, selective loading and every diet switch work alongside WP Rocket, LiteSpeed Cache, W3 Total Cache and the rest, exactly as they always have, and DietPress sends CORS and Vary headers for full CDN compatibility. Only its own page cache steps aside.

How does the Google Fonts local hosting work?

When you enable it (Light tab, Performance section), DietPress detects the Google Fonts stylesheets your theme loads, downloads them once to your uploads folder and serves everything from your own server, so visitors no longer connect to Google, which is faster and GDPR-friendly. If any download fails, fonts silently keep loading from the Google CDN. Local copies refresh when you switch themes and disappear when you turn the option off.

Selective loading removed something my site needs

Each module only removes assets where its target content isn't detected, but unusual setups exist: a hand-coded mini-cart, a form injected via AJAX, a classic theme reusing block styles everywhere. Turn that specific toggle off, or use the dietpress_selective_* escape filters to keep exactly what your site needs.

Something went wrong after activating it

If a theme or plugin doesn't enqueue its scripts properly, deferring JavaScript can affect it. Turn that option off or use the dietpress_skip_defer_script_handles filter. If you get a 500 error, remove the block starting with # BEGIN DietPress from your .htaccess or disable the server rules option.

Can I customize it as a developer?

Yes. There are more than twenty dietpress_* filters, plus the page cache ones (dietpress_cache_bypass, dietpress_cache_exclude_urls and three more), the dietpress_cache_purge_all action and the dietpress_purge_page_cache() function. The main ones: dietpress_critical_css, dietpress_critical_css_handles, dietpress_skip_defer_script_handles, dietpress_skip_defer_style_handles, dietpress_preconnect_hints, dietpress_dns_prefetch_domains and dietpress_critical_fonts, plus specific hooks for local font hosting (dietpress_exclude_local_fonts) and selective loading (dietpress_selective_*). The old ayudawp_wpotweaks_* filters still work through a compatibility bridge.

How do I verify it's working?

For the cache, look at the X-DietPress-Cache header in your browser's network tab, or at the footprint comment at the end of a stored page. For the rest, check your .htaccess for the # BEGIN DietPress block, view your page source and look for the core-diet-critical-css style and the logo preload, and test compression at giftofspeed.com/gzip-test. Then measure with PageSpeed, GTmetrix or WebPageTest, running each test at least twice to account for caching.

About

Created by Fernando Tellado

DietPress is a project by Ayuda WordPress, the largest Spanish-speaking WordPress community, created by Fernando Tellado, who has been helping WordPress users for over 20 years with tutorials, guides and plugins.

We build tools that solve real problems. No gimmicks, no unnecessary subscriptions, no data collection. Plugins that work. Period.

Need professional help with your WordPress? Our team offers maintenance services so you can focus on what matters.

+20Years with WordPress
2,000+Active installs
100%Free
0Data collected

Start the diet today

Install DietPress in under a minute, switch the cache on and measure. It's free, needs no account, and everything stays on your server.