Modern customers expect lightning-fast shopping experiences — and Google does too.
If your NopCommerce store takes more than three seconds to load, you’re likely losing both conversions and rankings.
In this guide, we’ll explore practical, real-world techniques to improve your NopCommerce site’s speed and SEO performance, from core web vitals to caching, image optimization, and plugin hygiene.
Contents
- Why Speed Impacts SEO
- Convert Images to WebP/AVIF
- Remove jQuery & Unused JS on Content Pages
- Delete Unused Plugins & Themes
- Static File Caching & Compression
- Minify & Bundle CSS/JS
- Database & Index Optimization
- Distributed Caching (Redis)
- Output Caching for HTML
- Lazy Loading & CDN for Images
- HTTP/3 & Brotli
- NopCommerce Settings to Tweak
- Keep NopCommerce & .NET Current
- Hosting & Infrastructure Tips
- Auditing & Core Web Vitals
- SEO Wins that Improve Speed
- Example Results
- FAQs
Why Speed Optimization Matters for SEO
Google emphasizes Core Web Vitals (LCP, INP, CLS). Slow pages hurt visibility and conversion. Faster sites get better crawl efficiency, lower bounce rates, and higher revenue. NopCommerce is powerful, but like any platform, it needs tuning to shine.
Here are a few tips and tricks when optimising a nopcommerce store for speed.
1) Convert Images to WebP/AVIF (Biggest Win)
Problem: Legacy JPG/PNG assets inflate LCP and TTFB. Fix: Convert to WebP/AVIF and size correctly.
- Batch-convert with your .NET WebP converter or an image pipeline.
- Use
<picture>for fallbacks and setwidth/heightto prevent CLS.
<picture>
<source srcset="/media/product123.webp" type="image/webp">
<img src="/media/product123.jpg" alt="Product 123" width="800" height="800" loading="lazy">
</picture>
Tip: Preload the hero image on key landing pages; lazy-load below-the-fold product cards.
2) Remove jQuery & Unused JavaScript on Content Pages
Don’t load jQuery and heavy plugins on simple content/landing pages. Replace small interactions with vanilla JS and conditionally include scripts only where needed.
@* Example conditional include *@
@if (Model.PageName == "Home") {
<script src="~/scripts/home.min.js" defer></script>
}
OR
Render optional section for JS in your Shared/_Root.Head.cshtml like below
@await RenderSectionAsync("JsContentBody", false)
and then in your _Root.chstml and _ColumnsOne.cshtml like below
@section JsContentBody {
@await RenderSectionAsync("JsContentBody", false)
}
Now only load all script files where the files are needed. For instance if you wish to use jquery on Home page, you will call it using below code.
@section JsContentBody {
<script type='text/javascript' src='@Url.Content("~/js/jquery-3.4.1.min.js")'></script>
}
This way you simply call jquery, bootstrap or other javascript frameworks where they are needed.
Result: Smaller bundles → better INP and LCP.
3) Delete Unused Plugins & Themes
- Disable/uninstall via Admin → Configuration → Local Plugins.
- Remove plugin folders in
/Plugins/and unused themes in/Themes/. - Rebuild in Release mode to prune dependencies.
Less bloat = fewer scripts/queries and faster startup & render.
4) Enable Static File Caching & Compression
// Program/Startup
builder.Services.AddResponseCompression(o => {
o.EnableForHttps = true;
o.Providers.Add<Microsoft.AspNetCore.ResponseCompression.GzipCompressionProvider>();
});
app.UseStaticFiles(new StaticFileOptions {
OnPrepareResponse = ctx => {
ctx.Context.Response.Headers.Append("Cache-Control","public,max-age=31536000,immutable");
}
});
app.UseResponseCompression();
Serve CSS/JS/fonts/images via a CDN. Set long-lived, immutable caching for hashed assets.
5) Minify & Bundle CSS/JS
- Enable bundling/minification in Admin → General Settings.
- Where needed, bundle with Webpack/Gulp and split critical vs non-critical chunks.
6) Optimize Database & Indexes
- Rebuild/reorganize indexes for
Product,Category,Order,Customer. - Profile slow queries (SQL Query Store/Profiler); avoid excessive
Include()graphs. - Cache frequently-read catalog data (see Redis next).
7) Use Distributed Caching (Redis)
// appsettings.json
"RedisCachingEnabled": true,
"RedisCachingConnectionString": "localhost:6379"
// Program/Startup
services.AddStackExchangeRedisCache(o => {
o.Configuration = Configuration["RedisCachingConnectionString"];
});
Cache product details, categories, menus, and homepage fragments. Expect 2–3× faster page loads with fewer DB hits.
8) Output Caching for HTML (ASP.NET Core 7+)
builder.Services.AddOutputCache();
app.UseOutputCache();
app.MapControllerRoute(
name: "Home",
pattern: "/",
defaults: new { controller = "Home", action = "Index" }
).CacheOutput(x => x.Expire(TimeSpan.FromMinutes(10)));
Great for anonymous users on home/category/product-list pages.
9) Lazy Loading & CDN for Images
- Use
loading="lazy"for below-the-fold images. - Use smaller thumbnails for cards; larger images for PDP only.
- Serve images, CSS, and JS from a CDN subdomain (e.g.,
cdn.example.com).
10) HTTP/3 & Brotli
Enable HTTP/3 at your CDN and Brotli compression in ASP.NET Core for faster transfers, especially on mobile networks.
builder.Services.AddResponseCompression(o => {
o.EnableForHttps = true;
o.Providers.Add<Microsoft.AspNetCore.ResponseCompression.BrotliCompressionProvider>();
});
11) NopCommerce Settings to Tweak
- Enable “Use bundling and minification”, “Use response compression”.
- Reduce products per page for listing templates.
- Enable lazy-loading where supported by your theme.
- Configure CDN path for static files.
12) Keep NopCommerce & .NET Up to Date
- Upgrade to the latest NopCommerce for performance/security fixes.
- Target .NET 8 (LTS); publish in
Releaseand trim/ReadyToRun if feasible.
13) Hosting & Infrastructure Tips
- Use SSD-backed servers or Azure App Service; place the origin near your audience.
- Run Application Insights for end-to-end performance traces.
- Enable keep-alive, TLS session resumption, and CDN edge caching.
| Area | Baseline | Optimized |
|---|---|---|
| Origin | Generic VPS | SSD VPS/Azure App Service near audience |
| Edge | No CDN | Global CDN w/ HTTP/3 + cache rules |
| Observability | Basic logs | App Insights + RUM + CWV tracking |
14) Auditing & Core Web Vitals
Track real-user metrics via Search Console. In lab, use Lighthouse/WebPageTest. Key thresholds: LCP < 2.5s, INP < 200ms, CLS < 0.1.
15) SEO Wins that Also Improve Speed
- Clean, descriptive URLs; avoid redirect chains.
- Structured data (JSON-LD) for products/breadcrumbs.
- Preload critical fonts with
font-display: swapand stable fallbacks. - Minify/optimize XML sitemaps; keep them under size limits.
16) Example Results
| Metric | Before | After |
|---|---|---|
| LCP | 4.5s | 1.8s |
| INP | 450ms | 160ms |
| CLS | 0.25 | 0.05 |
| Lighthouse Performance | 58 | 94 |
| SEO Score | 72 | 95 |
FAQs
How do I speed up images on NopCommerce?
Convert to WebP/AVIF, serve via CDN, set width/height to avoid CLS, lazy-load below the fold, and preload the hero image.
What’s the easiest Core Web Vitals win?
Server-render the hero section, move to optimized images, enable compression and static caching, and remove unused JS — especially on content/landing pages.
Does Redis help?
Yes. Redis caching of catalog/homepage data reduces DB trips and speeds up category/product pages significantly.