40% of the top 1,000 sites serve almost nothing to AI crawlers that do not run JavaScript — ChatGPT, Perplexity, and Claude see an empty page. Here is the data, the method, and how to fix it.
mod_pagespeed 1.15 ships 765 first-parent merges since 1.13.35.2 — image-decoder hardening, a full sanitizer matrix, a current dependency graph, and the IIS port folded into the C++ tree.
ModPageSpeed 2.0 as ASP.NET Core middleware via NuGet. Same optimization pipeline — images, CSS, JS, critical CSS — integrated with two lines of C#. No nginx required.
SSRF protection for headless browser rendering: ModPageSpeed 2.0 forces Chrome offline, routing subresources through an IP-pinned fetch re-checked per redirect.
Default cache TTL when no Cache-Control: per-content-type heuristic TTLs, RFC 9111 Age adjustment at insert, and the shared-vs-private cache split in MPS 2.0.
Headless LCP and CLS measurement in ModPageSpeed 2.0: injected PerformanceObservers capture the real LCP element and layout shifts to drive preload hints.
How ModPageSpeed 2.0 does cache warmup variant generation for hot URLs via a sentinel from nginx, instead of encoding one variant per the first request.
How a headless Chrome coverage pass identifies which JavaScript actually runs on a page, so ModPageSpeed 2.0 can defer or drop the JS that never executes.
Safe JavaScript minification is not whitespace stripping. How a tokenizer handles automatic semicolon insertion, regex-vs-divide, and a parse-error fail-safe.
How to serve markdown to AI crawlers on the same URL via Accept: text/markdown, synthesize /llms.txt from the sitemap, and honor AI opt-out directives.
How a proxy generates server-injected resource hints: speculation-rules prefetch derived from real traffic, priority-bucketed preconnect, font preload.
How ModPageSpeed 2.0 scores encoded images against a SSIMULACRA2 image quality target and re-encodes until the result clears tolerance, not a quality knob.
How cache key derivation in ModPageSpeed 2.0 hashes host plus URL into one key and scores stored variants in one selector pass instead of probing many keys.
Cache mode safety in ModPageSpeed 2.0: why must-revalidate, not the TTL, is the real safety net, and when aggressive TTLs plus stale-if-error are right.
Conditional revalidation vs purge: when a 304 ETag round-trip beats PURGE and preserves optimized AVIF/WebP variants on an HTML-only deploy with no rebuild.
How critical CSS extraction works without a build step: the original beacon model, why CDNs broke it, and how 2.0 moved to heuristics + headless Chrome.
How ModPageSpeed 2.0 feeds the Chrome Coverage API critical CSS: inline cached stylesheets into a network-blocked sandbox so it reports real used vs unused CSS.
How ModPageSpeed 2.0 uses fire-and-forget IPC between nginx and the worker — a small notification, no reply — so requests never wait on optimization work.
Content-aware image optimization classifies decoded images and denoises noisy sources before encoding, so photos, screenshots, and logos get the right codec.
How ModPageSpeed 2.0 uses a single memory-mapped cache shared by nginx and the worker, giving nginx zero-copy reads of worker-written variants vs the 1.x model.
Does mod_pagespeed break a Content-Security-Policy? Where automatic rewriting collides with a strict CSP, and how the HonorCsp directive keeps it safe.
How ModPageSpeed 2.0 uses sentinel cache keys — the reserved Viewport=3 trick — to store 103 Early Hints preloads, an origin content hash, and a browser optimization profile alongside content variants.
Purging a single URL in ModPageSpeed touches more than one cache entry. Here is the fan-out problem, the lookup-time design 1.x used, and why 2.0 deletes immediately instead.
Raster to SVG auto-vectorization in ModPageSpeed 2.0 traces qualifying logos and icons with VTracer, collapsing the @1x/@2x/viewport matrix into one variant.
How ModPageSpeed 2.0's visual regression gate pixel-diffs the rendered above-fold to discard any headless critical-CSS optimization that changes output.
How a WordPress server-side page cache plugin sets Cache-Control on anonymous pages and purges the ModPageSpeed cache on publish, instead of caching in PHP.
Google's new Search Console report measures your visibility in AI Overviews and AI Mode, not how fast your pages load. A mod_pagespeed maintainer on the difference.
AVIF is smaller than WebP but slower to encode. In 2026 you can serve AVIF, WebP, or the original per request off the Accept header instead of choosing one format for everyone. Here is how, and why doing it by hand goes wrong at scale.
You set one perception-based knob (how good should it look) and a trained model predicts the right encoding parameters for every image and format in microseconds. No per-codec tuning, on your own servers.
A native nginx module that transcodes images to WebP on serve, content-negotiates on Accept, and caches the variant. Install from signed apt/yum — no compiling from source.
Why upstream ngx_pagespeed fails to compile against nginx 1.25 and later (sys_siglist, glibc, and toolchain drift), and how to install the maintained, prebuilt nginx-module-pagespeed from packages.modpagespeed.com instead.
Reduce TTFB and server response time on nginx: split origin compute from network from cache, then fix keep-alive, HTTP/2 or HTTP/3, TLS resumption, brotli_static, and variant-aware caching.
An image SaaS bills you per transformation and per GB of egress. Self-hosted optimization transcodes WebP/AVIF on your own servers at a flat per-site cost, with no third party in the request path.
A content hash in a .pagespeed. URL lets mod_pagespeed cache an asset for a year and never purge it. How content-hashed URLs and data-pagespeed-url-hash work.
Serve WebP and AVIF from ASP.NET Core with no controller changes. WeAmp.PageSpeed middleware does content negotiation, viewport sizing, and LCP preload.
How to fix INP on ASP.NET Core: Razor + jQuery responds well to bundling and the WeAmp.PageSpeed middleware; Blazor Server INP is architectural and needs WASM.
Yes, mod_pagespeed is deprecated. The 1.13.35.2 binaries still run but have not received security updates in years. Here's what to use instead on Apache, nginx, IIS, and ASP.NET Core.
How to fix LCP on ASP.NET Core: async view components, cached static files, and the WeAmp.PageSpeed middleware. Practical steps for Razor Pages and MVC in 2026.
How to fix INP on nginx: a CMS-agnostic guide. Server-layer JS minification helps if your JS is bloated; if your stack is already lean, the wins are upstream.
How to fix LCP on nginx: HTTP/2, gzip_static, TLS resumption, and the mod_pagespeed rewriter. Stack-agnostic LCP fixes that work behind any backend in 2026.
How to fix INP on Magento: the high-leverage fix is theme architecture (Hyvä), not a server-layer rewriter. What mod_pagespeed can do, and what it cannot.
How to fix LCP on Magento: tame the RequireJS waterfall, regenerate catalog images, inline critical CSS at the server. Step-by-step for Magento 2 in 2026.
How to fix INP on WooCommerce: server-layer JS minification reduces the parse cost, but cart and variation handlers are architectural. The plan inside.
How to fix LCP on WooCommerce: shrink the product gallery, kill cart-fragments on non-shop pages, and rewrite images at the server. Practical steps for 2026.
How to fix LCP on WordPress: diagnose the hero, inline critical CSS at the server, convert JPEG to WebP, and verify in Search Console. Step-by-step, 2026.
Step-by-step guide for migrating from Google's mod_pagespeed 1.13.x or ngx_pagespeed to ModPageSpeed 2.0. Configuration mapping, Docker Compose setup, and verification checklist.
ModPageSpeed 2.0 extracts critical CSS two ways: static heuristics in under 5ms on every page, plus an optional headless-Chrome path for true above-the-fold rules.
Image CDNs run $35–$3,500/mo as traffic grows; self-hosted ModPageSpeed stays flat. Break-even is ~300–500K requests/mo. Full 2026 cost model, no bandwidth fees.
How ModPageSpeed 2.0 respects the Save-Data HTTP header to serve lighter image variants. Typical 30-50% additional bandwidth reduction on top of format and viewport optimization.
ModPageSpeed 2.0 benchmarks across e-commerce, blog, news, and portfolio sites. Real LCP, FCP, and Lighthouse improvements on 3G, 4G, and broadband — methodology included.
The story behind ModPageSpeed 2.0 — why mod_pagespeed is no longer actively developed, what was kept from PSOL, and how a new architecture replaced the RewriteDriver.