When a user requests a page, the EdgeWorker rewrites every <img> src and
<source> srcset URL to point through Harper's Image Optimizer API. The optimizer uses a
fetch-on-demand pattern powered by Harper's sourcedFrom caching:
1
Cache CheckHarper checks the ImageCache table for a variant matching the requested URL + width + format. If found, it's returned instantly from memory (sub-millisecond).
2
Fetch OriginalOn cache miss, Harper fetches the original image from assets.basspro.com (their Cloudinary CDN). This is a server-to-server request with no CORS restrictions.
3
Optimize with SharpThe image is piped through Sharp (libvips): resized to the target width with Lanczos3, converted to WebP (quality 85) or AVIF (quality 72), and the binary is buffered.
4
Cache VariantThe optimized binary is stored as a Blob in Harper's ImageCache table with a 24-hour TTL. The cache key encodes the source URL, target width, and output format using base64url.
5
Return & ServeThe optimized image is returned with correct Content-Type, Cache-Control headers, and X-Original-Size / X-Optimized-Size headers for measurement. Harper's built-in stampede protection ensures concurrent requests for the same uncached image only trigger one fetch.
103 Early Hints Flow
The Early Hints component stores page-to-asset mappings in a Harper table. When the Akamai EdgeWorker receives a request, it calls Harper's /hints endpoint to get the preload data for that URL, then emits a 103 Early Hints response. The browser starts downloading the hero image and critical CSS while the origin server is still generating the HTML. This effectively turns the TTFB wait time (1.4 to 1.7 seconds) into useful asset-loading time.
Script Deferral Strategy
The EdgeWorker classifies every <script> tag in the HTML response as critical or deferrable. Critical scripts (consent manager, A/B testing core) are left untouched. Deferrable scripts (session replay, chat widgets, ad pixels, social trackers, secondary analytics) are rewritten to type="text/plain" with the src moved to a data-defer-src attribute. A small inline loader (~500 bytes) activates them after one of three events: LCP fires (via PerformanceObserver), 5 seconds of idle time, or the user's first interaction (scroll, click, touch, keypress). This unblocks the critical render path without losing any functionality.
CLS Prevention
Layout shift (CLS 0.96 on mobile) is caused primarily by images rendering without reserved space. The EdgeWorker adds explicit width and height attributes to every <img> element, and injects fetchpriority="high" on the hero image so the browser allocates space and prioritizes the LCP element. Combined with loading="lazy" on below-fold images, this reduces network contention and eliminates the largest sources of layout shift.
What Bass Pro Needs to Provide
While the optimization layer is non-invasive and requires no changes to their application code, Bass Pro's team would need to collaborate on a few things to get this into production:
1
Akamai AccessWe need the ability to deploy an EdgeWorker on their Akamai property, or their Akamai team deploys it from our code.
2
Image CDN AllowlistingHarper's optimizer needs to fetch images from assets.basspro.com. If they have referrer restrictions or IP allowlists, they'd need to allowlist Harper Fabric's IPs.
3
Script Inventory ReviewWe need their team to validate which third-party scripts are safe to defer and which are critical. We provide a recommended classification, they sign off.
4
Hero Image IdentificationTheir team confirms which image is the LCP element on each key page so we configure the correct preload hints.
5
QA & ValidationThey run their existing QA process against the proxied version to confirm nothing breaks.
The key point: they write zero code. Their application, backend, and deployment pipeline stay untouched.
×
Homepage Performance POC
A diagnostic breakdown of basspro.com homepage performance, plus live optimization on real production assets, showing what Harper can improve from the edge.
1
Diagnose
Full Lighthouse audit of the homepage: what's slow, why, and how it impacts shoppers and search rankings.
2
Optimize
Image compression, hero preloading, script deferral, layout shift prevention: all applied automatically from the edge.
3
Zero Code Changes
Harper deploys as a proxy layer in front of the CDN. The application, backend, and deployment pipeline stay untouched.
Lighthouse Scores
Current
Projected with Harper*
*Projected scores based on the combined impact of image optimization, script deferral, preload injection, 103 Early Hints, and CLS prevention. Should be validated with a staged rollout and 28-day CrUX monitoring.
Core Web Vitals & Performance Metrics
CrUX field data (real users, 28-day rolling) and lab metrics from PageSpeed Insights, April 1, 2026.
Lighthouse Diagnostics
Every item below was flagged by Google's Lighthouse audit on basspro.com. Each issue directly impacts user experience, SEO ranking, and conversion rates.
Live Image Optimization
Original images fetched at full quality from Bass Pro's CDN, then optimized through Harper's pipeline using Sharp (libvips). Each image is converted to WebP, resized to the target viewport width, and compressed at quality 85. Click any image to enlarge.
Original
Optimized
Saved
Reduction
Revenue Impact Model
Adjust the inputs to match Bass Pro's real numbers. Defaults use third-party estimates and industry benchmarks. The model uses conservative conversion-lift assumptions so Bass Pro's team can plug in their actual data and see the impact. Click any value to type an exact number.
...
Projected Annual Revenue Recovered
Your Numbers
Annual Sessionsbasspro.com
100M1B
Default: ~470M (estimated from $964M revenue, 2.4% conv, $85 AOV)
Conversion Ratecurrent
0.5%5.0%
Outdoor/sporting goods e-commerce benchmark: 1.5% to 3.0%
Average Order Value
$40$200
Sporting goods e-commerce AOV benchmark: $70 to $120
Bounce Ratehomepage
20%65%
E-commerce average: 35% to 50%. Slow sites trend higher.
LCP Improvementfrom Harper
0.5s4.0s
Based on current LCP 6.2s (mobile) → projected 3.0–4.5s. Default assumes 3s improvement.
Conv. Rate Lift
...
New Conv. Rate
...
From Conversion Lift
...
additional annual revenue
From Reduced Bounce
...
Research Behind the Model
Google / Deloitte (2020) — 0.1s faster mobile load speed increased retail conversion by 8.4%. web.dev → · Deloitte →
Portent (2022) — Sites loading in 1s convert at 2.5× the rate of sites loading in 5s. Portent →
Akamai (2017) — 100ms delay in page load reduces conversion by up to 7%. Akamai →
Google (2016) — 53% of mobile sessions are abandoned if load exceeds 3 seconds. Google Blog →
Methodology: This model uses a conservative 2.1% conversion lift per 100ms of LCP improvement — approximately 4× lower than the Google/Deloitte finding of 8.4% per 100ms. Bounce rate recovery assumes 4.5 percentage points recovered per second of LCP improvement, capped at 20pp. Revenue from recovered bounced sessions uses the improved conversion rate. These are not guarantees — they're a framework for Bass Pro's team to model the opportunity using their real numbers.
What Harper Delivers: Zero Code Changes
Edge proxy in front of the origin. Bass Pro deploys nothing.
Image Optimization
WebP/AVIF, responsive resize, DPR-aware, cached with auto-invalidation.
→ 80 to 90% image weight reduction
Hero Preloading
Inject preload + fetchpriority so LCP image loads immediately.
→ 1 to 3s LCP improvement
Layout Shift Prevention
Add width/height to every image element.
→ CLS from 0.96 to <0.3
Script Deferral
Defer analytics, replay, chat, ads until after LCP.
→ 700 ms render-blocking removed
Resource Hints
Preconnect, dns-prefetch, font-display: swap.
→ 200 to 500 ms FCP improvement
103 Early Hints
Akamai EdgeWorker emits 103 before HTML arrives.
→ Overlap TTFB with asset loading
Implementation Path
POC to production: what happens at each stage, who does what, and how long it takes.
1
Deploy Image Optimizer to Harper Fabric
Harper deploys the image optimization service to our Fabric infrastructure. This includes the Sharp-based image pipeline, the caching layer with 24-hour TTL and auto-invalidation, and the API endpoint. No action needed from Bass Pro.Timeline: 1 to 2 days. Owner: Harper.
2
Configure Akamai EdgeWorker
We write the EdgeWorker code that intercepts HTML responses and rewrites them in-flight: image URL rewriting, preload injection, width/height attributes, script deferral, and resource hints. Bass Pro's Akamai team reviews and deploys. Origin stays untouched.Timeline: 3 to 5 days. Owner: Harper writes, Bass Pro's Akamai team deploys.
3
Enable 103 Early Hints
Harper populates a page-to-asset mapping table. The EdgeWorker queries it and emits 103 Early Hints before the origin HTML is generated. Bass Pro confirms which image is the LCP element on each key page template.Timeline: 1 to 2 days after Step 2. Owner: Harper configures, Bass Pro confirms hero images.
4
Script Audit & Deferral Configuration
Harper classifies every third-party script as critical or deferrable. We provide Bass Pro's team with the full classification for review and sign-off before activating deferral.Timeline: 2 to 3 days. Owner: Harper provides classification, Bass Pro validates.
5
QA & Staged Rollout
Bass Pro runs their standard QA process. All critical flows validated. We start with a percentage-based rollout (e.g., 5% of traffic) on Akamai before scaling to 100%.Timeline: 3 to 5 days. Owner: Bass Pro QA team, Harper monitors.
6
Measure, Monitor & Iterate
PageSpeed Insights before/after comparisons and CrUX data over 28 days. Harper provides a dashboard tracking LCP, CLS, INP, TBT, and image byte savings. Ongoing optimization is continuous.Timeline: Ongoing. Owner: Harper provides reporting and recommendations.