Best SEO Singapore
SEO Insights

6 Essential Techniques for Page Speed Improvement That Actually Move the Needle

Jim Ng
Jim Ng
·
Page Speed Improvement Process
Measure baseline using both lab AND field data
?Does field data match lab data?
Yes
Trust your scores; proceed to optimization
No
Field data worse — real users are suffering; prioritize fixes
Audit images — they cause 60-75% of page weight
?Is the image a photograph?
Yes
Convert to WebP with JPEG fallback
No
Use SVG or optimized PNG for graphics/text
Load time drops → bounce rate drops → rankings and conversions rise

If your website takes more than three seconds to load, you’re bleeding visitors and rankings. I’ve seen Singapore businesses lose up to 38% of their organic traffic simply because their pages were sluggish. Page speed improvement isn’t a nice-to-have. It’s the foundation that every other SEO effort sits on top of.

At bestseo.sg, we audit dozens of sites every quarter. The pattern is consistent: sites that load in under 2 seconds convert better, rank higher, and retain more visitors. This guide walks you through six essential techniques for page speed improvement, with the technical depth you need to actually implement them.

No fluff. No vague advice. Just the specific steps we use on client sites every week.

Why Page Speed Matters More in Singapore Than You Think

Singapore has one of the fastest average internet speeds in the world, hovering around 260 Mbps for fixed broadband. You’d think that means page speed is less of an issue here. The opposite is true.

When your users are accustomed to near-instant loading, even a 1.5-second delay feels slow. Google’s own data shows that as page load time goes from 1 second to 3 seconds, bounce probability increases by 32%. Go to 5 seconds and that jumps to 90%.

There’s also the mobile factor. Over 72% of web traffic in Singapore comes from mobile devices. Many of those users are on MRT trains, in HDB corridors, or walking through areas with inconsistent 4G coverage. Your desktop speed score means nothing if your mobile experience is poor.

Google uses mobile-first indexing. That means your mobile page speed directly determines your search rankings. If you’re running an e-commerce store or a service business in Singapore, a slow mobile site is costing you money every single day.

How to Measure Your Current Page Speed (Properly)

Before you fix anything, you need a baseline. But here’s where most people go wrong: they run one test on Google PageSpeed Insights, see a green score, and assume they’re fine.

A single test tells you almost nothing. You need to understand the difference between lab data and field data.

Lab Data vs. Field Data

Lab data comes from tools like Lighthouse (which powers PageSpeed Insights). It simulates a page load under controlled conditions. It’s useful for debugging specific issues, but it doesn’t reflect what your actual users experience.

Field data, also called Real User Metrics (RUM), comes from the Chrome User Experience Report (CrUX). This is what Google actually uses for ranking purposes. You can see your field data in PageSpeed Insights under the “Discover what your real users are experiencing” section, or in Google Search Console under Core Web Vitals.

If your lab score is 95 but your field data shows a Largest Contentful Paint (LCP) of 4.2 seconds, you have a problem that your lab tests are hiding.

The Tools You Should Actually Use

Run your tests across multiple tools to get a complete picture:

  • Google PageSpeed Insights for both lab and field data. Pay attention to the Core Web Vitals metrics: LCP, Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS).
  • GTmetrix for its waterfall chart. Set the test server to Hong Kong or Singapore (available on paid plans) to get latency numbers that reflect your actual audience.
  • WebPageTest.org for advanced testing. You can run tests from Singapore, choose specific connection speeds, and even do filmstrip comparisons between your site and a competitor’s.
  • Chrome DevTools Performance tab for granular, request-by-request analysis. This is where you’ll spend most of your time when debugging.

Run each test at least three times and take the median result. Network variability can cause single-run scores to fluctuate by 10-15 points.

Technique 1: Compress and Serve Images in Next-Gen Formats

Images are almost always the biggest offenders. On the average Singapore business website we audit, images account for 60-75% of total page weight. Fixing your images alone can cut load times in half.

Choose the Right Format

Stop using PNG for photographs. Stop using JPEG for graphics with text or transparency. Here’s the decision tree we follow:

  • Photographs and complex images: WebP (with JPEG fallback for older Safari versions). WebP delivers 25-34% smaller file sizes compared to JPEG at equivalent quality.
  • Simple graphics, logos, icons: SVG where possible. SVGs are vector-based, so they’re tiny and scale perfectly on any screen.
  • Images that need transparency: WebP or AVIF. Avoid PNG unless you need to support very old browsers.
  • Hero images and large visuals: AVIF if your server supports it. AVIF can be 50% smaller than JPEG. Browser support is now above 92% globally.

Implement Responsive Images Properly

This is where most developers cut corners. Don’t just upload one large image and let CSS resize it. A 2000px-wide hero image being served to a 375px-wide mobile screen wastes enormous bandwidth.

Use the srcset and sizes attributes in your <img> tags. Generate multiple versions of each image at different widths (e.g., 400px, 800px, 1200px, 1600px). Let the browser choose the appropriate size based on the user’s viewport and device pixel ratio.

If you’re on WordPress, plugins like ShortPixel or Imagify can automate this. But verify the output. I’ve seen plugins generate “optimised” images that are actually larger than the originals because of incorrect settings.

Lazy Load Below-the-Fold Images

Native lazy loading is now supported in all modern browsers. Add loading="lazy" to any image that isn’t visible in the initial viewport. But do NOT lazy load your LCP image (usually your hero image or the first prominent visual). Lazy loading your LCP image will make your most important Core Web Vital worse.

For your LCP image, do the opposite: add fetchpriority="high" and preload it in the <head> with a <link rel="preload"> tag.

Technique 2: Minify and Bundle Your CSS, JavaScript, and HTML

Every unnecessary character in your code is a byte your user’s browser has to download. Minification strips out whitespace, comments, and line breaks without changing functionality. It sounds minor, but on a typical WordPress site with multiple plugins, minification alone can reduce total file sizes by 20-30%.

How to Minify Effectively

For WordPress sites, WP Rocket or Autoptimize handle this well. For custom-built sites, integrate minification into your build process using tools like Terser (for JavaScript), cssnano (for CSS), and HTMLMinifier.

But minification is just the start. You also need to address how many files are being loaded.

Reduce the Number of HTTP Requests

Open Chrome DevTools, go to the Network tab, and reload your page. Count the total requests. I’ve audited Singapore business sites with over 120 HTTP requests on a single page. That’s absurd.

Each request has overhead: DNS lookup, TCP connection, TLS handshake, and server response time. Even with HTTP/2 multiplexing, fewer requests means faster loading.

Combine CSS files where possible. Inline critical CSS (the styles needed for above-the-fold content) directly into the HTML <head>. Load the rest asynchronously. For JavaScript, bundle related scripts together and eliminate any that aren’t essential for the current page.

Remove Unused CSS and JavaScript

This is a huge issue on WordPress sites. Your theme might load 200KB of CSS, but the current page only uses 30KB of it. Tools like PurgeCSS or the Coverage tab in Chrome DevTools can identify unused code.

On one client’s site (a Singapore F&B chain), we found that 68% of their CSS was unused on any given page. Removing that dead code cut their First Contentful Paint by 0.8 seconds.

Technique 3: Implement Strategic Caching

Caching stores copies of your resources so they don’t need to be downloaded or generated again. There are two layers you need to address: browser caching and server-side caching.

Browser Caching

When a user visits your site for the first time, their browser downloads all your CSS, JavaScript, images, and fonts. Without browser caching, it downloads everything again on the next visit. That’s wasteful.

Set proper Cache-Control headers for your static assets. Here’s what we typically recommend:

  • Images, fonts, and media: max-age=31536000 (1 year). These rarely change.
  • CSS and JavaScript: max-age=31536000 with cache-busting filenames (e.g., style.a3f8b2.css). When you update the file, the filename changes, forcing a fresh download.
  • HTML pages: max-age=0, must-revalidate or a short TTL. You want users to always get the latest content.

Server-Side Caching

If you’re running WordPress or any dynamic CMS, every page request triggers PHP execution and database queries. Server-side caching stores the generated HTML so subsequent requests skip all that processing.

For WordPress, WP Rocket or W3 Total Cache handle this. For more control, use a server-level solution like Varnish, Redis, or Nginx FastCGI caching. Server-level caching is significantly faster than plugin-based caching because it intercepts the request before PHP even starts.

On a recent project for a Singapore property portal, switching from plugin-based caching to Nginx FastCGI caching reduced Time to First Byte (TTFB) from 1.2 seconds to 89 milliseconds. That’s a 93% improvement in server response time.

Object Caching for Database-Heavy Sites

If your site runs complex queries (e-commerce product filters, membership sites, directory listings), implement object caching with Redis or Memcached. This stores the results of database queries in memory, so repeated queries return instantly instead of hitting the database again.

Technique 4: Use a CDN Configured for Your Audience

A Content Delivery Network distributes copies of your static files across servers worldwide. When someone in Singapore loads your site, they get files from a nearby server instead of your origin server, which might be in the US or Europe.

CDN Selection for Singapore-Focused Sites

Not all CDNs are equal for Singapore traffic. You want a provider with edge nodes (Points of Presence) in Singapore. Cloudflare has a Singapore PoP and offers a generous free tier. BunnyCDN is another excellent option with Singapore coverage and very competitive pricing.

If your audience is primarily in Singapore and Southeast Asia, verify that your CDN actually routes Singapore traffic to a Singapore node. Some CDNs route Singapore traffic through Tokyo or Sydney, adding 30-50ms of unnecessary latency.

You can test this by running a traceroute or using a tool like CDNPerf to compare real-world performance across providers.

What to Put on the CDN

At minimum, serve all static assets through the CDN: images, CSS, JavaScript, fonts, and videos. For better performance, enable full-page CDN caching for pages that don’t change frequently (your homepage, service pages, blog posts).

If you’re running an e-commerce site, be careful with full-page caching on dynamic pages like cart and checkout. Those need to bypass the CDN cache.

CDN and Core Web Vitals

A well-configured CDN directly improves two Core Web Vitals. It reduces LCP by delivering your largest image or text block faster. It also reduces TTFB, which is a diagnostic metric that affects all other speed measurements.

Technique 5: Eliminate Render-Blocking Resources and Optimise Script Loading

This is the technique that makes the biggest difference in perceived speed. Your user doesn’t care about total load time. They care about how quickly they can see and interact with your page.

Understanding the Critical Rendering Path

When a browser loads your page, it follows a specific sequence. It downloads the HTML, then discovers CSS and JavaScript files referenced in the HTML. Here’s the problem: by default, CSS and JavaScript are render-blocking. The browser won’t paint anything on screen until it has downloaded and processed all your CSS. JavaScript is even worse because it blocks both parsing and rendering.

Fix Render-Blocking CSS

Identify your critical CSS, which is the minimal CSS needed to render above-the-fold content. Inline it directly in the <head> of your HTML. Then load the rest of your CSS asynchronously using a pattern like this:

<link rel="preload" href="style.css" as="style" onload="this.onload=null;this.rel='stylesheet'">

Tools like Critical (an npm package) can automatically extract critical CSS for you. If you’re on WordPress, WP Rocket has a built-in “Remove Unused CSS” feature that handles this reasonably well.

Fix Render-Blocking JavaScript

For every <script> tag, decide whether it needs async, defer, or neither:

  • defer: The script downloads in parallel with HTML parsing but executes only after the HTML is fully parsed. Use this for most scripts, especially analytics and tracking.
  • async: The script downloads in parallel and executes as soon as it’s ready, potentially before HTML parsing is complete. Use this for independent scripts that don’t depend on other scripts or the DOM.
  • No attribute: Only for scripts that absolutely must execute before any content renders. This should be rare.

A common mistake: adding async to scripts that depend on each other. If Script B depends on Script A, and both are async, Script B might execute first and break. Use defer instead, which preserves execution order.

Tackle Third-Party Scripts Aggressively

Third-party scripts are the silent killers of page speed. Google Analytics, Facebook Pixel, live chat widgets, heatmap tools, remarketing tags. Each one adds weight and, more critically, introduces a dependency on an external server you don’t control.

I audited a Singapore retail client’s site that had 14 third-party scripts. Their total page weight was 4.7MB, and third-party scripts accounted for 2.1MB of that. We removed 6 scripts that weren’t providing actionable data, deferred the rest, and their LCP dropped from 4.8 seconds to 2.1 seconds.

Here’s what to do: open Chrome DevTools, go to the Network tab, and filter by “Third-party.” Review every single script. Ask yourself: “Is this giving us data or functionality we actually act on?” If the answer is no, remove it.

For the scripts you keep, load them via Google Tag Manager with trigger conditions. For example, load your live chat widget only after 5 seconds or after the user scrolls. Load your Facebook Pixel after the page becomes interactive. This prevents third-party scripts from competing with your core content for bandwidth and CPU time.

Technique 6: Optimise Your Server Response and Database

Everything we’ve covered so far happens in the browser. But if your server takes 2 seconds just to respond to the initial request, no amount of front-end optimisation will save you.

Reduce Time to First Byte (TTFB)

TTFB measures how long it takes for the server to send the first byte of data after receiving a request. Google recommends a TTFB under 800ms, but you should aim for under 200ms.

Common causes of high TTFB:

  • Cheap shared hosting: If you’re on a $5/month shared hosting plan, you’re sharing server resources with hundreds of other sites. One noisy neighbour can tank your performance. For Singapore businesses, consider a VPS or managed WordPress host with servers in Singapore or at least in Asia-Pacific.
  • Unoptimised database queries: Slow queries are the most common server-side bottleneck for WordPress and WooCommerce sites.
  • No server-side caching: As covered in Technique 3, every uncached request forces the server to execute PHP and query the database from scratch.
  • PHP version: If you’re still running PHP 7.4, upgrade to PHP 8.2 or 8.3. PHP 8.x is up to 3x faster than PHP 7.4 for WordPress workloads.

Database Optimisation for CMS Sites

Your WordPress database accumulates junk over time. Post revisions, spam comments, transient options, orphaned metadata from deleted plugins. Think of it like a hawker stall that never clears old plates from the tables. Eventually, there’s no room for new customers to sit down.

Here’s a practical database cleanup checklist:

  • Limit post revisions: Add define('WP_POST_REVISIONS', 5); to your wp-config.php. This keeps only the 5 most recent revisions per post instead of unlimited.
  • Delete spam and trashed comments: Use WP-Optimize or a direct SQL query to purge them.
  • Clean up transients: Expired transients should be auto-deleted, but many aren’t. WP-Optimize handles this.
  • Remove orphaned post meta: When you uninstall a plugin, it often leaves behind custom fields in the wp_postmeta table. Over years, this table can grow to millions of rows. Use Advanced Database Cleaner to identify and remove orphaned data.
  • Optimise database tables: Run OPTIMIZE TABLE on your largest tables (usually wp_posts, wp_postmeta, and wp_options). This reclaims space and defragments the data.

On a Singapore e-commerce client running WooCommerce, their wp_postmeta table had 3.2 million rows. After cleanup, it dropped to 890,000 rows. Database query times improved by 62%, and their average TTFB went from 1.4 seconds to 340 milliseconds.

Consider Your Hosting Location

If your target audience is in Singapore, your server should be in Singapore. Every additional 1,000km between your server and your user adds roughly 10ms of latency. A server in the US adds 200-250ms of latency before any processing even begins.

Providers like Vultr, DigitalOcean, and AWS all have Singapore data centres. If you’re using managed WordPress hosting, Cloudways lets you deploy on Vultr or DigitalOcean’s Singapore servers. Kinsta uses Google Cloud Platform’s Singapore region.

Setting a Performance Budget to Stay Fast

Fixing your page speed once is not enough. Without guardrails, your site will slow down again. New plugins get added. A designer uploads uncompressed hero images. A marketing team pastes in a new tracking script. Within six months, you’re back to square one.

A performance budget prevents this. It’s a set of limits you agree on before adding anything new to your site.

How to Set Your Budget

Start with your Core Web Vitals targets:

  • LCP: Under 2.5 seconds (aim for under 1.5 seconds)
  • INP: Under 200 milliseconds
  • CLS: Under 0.1

Then set resource-level budgets:

  • Total page weight: Under 1.5MB for content pages, under 2.5MB for image-heavy pages
  • JavaScript total: Under 300KB (compressed)
  • CSS total: Under 100KB (compressed)
  • Maximum HTTP requests: Under 50
  • Third-party scripts: Maximum of 5

Document these limits and share them with everyone who touches your website. When someone wants to add a new chat widget or a fancy animation library, the first question should be: “Does this fit within our performance budget?”

Automate Budget Monitoring

Set up automated Lighthouse CI checks in your deployment pipeline. If a code change pushes any metric beyond the budget, the deployment is flagged or blocked. If you don’t have a CI/CD pipeline, at minimum set up weekly automated tests using tools like SpeedCurve or DebugBear. These tools track your performance over time and alert you when metrics degrade.

Think of it like monitoring your business expenses. You wouldn’t let team members spend without any budget oversight. Treat your website’s performance the same way.

Putting It All Together: Priority Order

If you’re feeling overwhelmed, here’s the order I’d tackle these page speed improvement techniques for maximum impact with minimum effort:

  1. Measure first. Run PageSpeed Insights, GTmetrix, and check your Core Web Vitals in Search Console. Know your baseline numbers.
  2. Fix images. This is almost always the single biggest win. Convert to WebP, implement responsive images, lazy load below-the-fold images. You can often cut 1-2 seconds off load time in an afternoon.
  3. Enable caching. Install a caching plugin or configure server-level caching. This dramatically improves the experience for returning visitors.
  4. Audit and remove third-party scripts. Every script you remove is an instant improvement with zero downside.
  5. Defer and async your remaining scripts. Fix render-blocking resources to improve perceived speed.
  6. Minify, bundle, and remove unused CSS/JS. Clean up your code delivery.
  7. Optimise your server and database. Upgrade PHP, clean your database, and consider better hosting if needed.
  8. Set up a CDN. Cloudflare’s free plan is a solid starting point for most Singapore businesses.
  9. Establish a performance budget. Prevent future regressions.

Each step builds on the previous one. Don’t skip straight to CDN configuration if your images are still 3MB PNGs.

Page Speed Improvement Is an Ongoing Practice

Your website is not a static thing. Content gets added, plugins get updated, new features get requested. Page speed improvement is not a one-time project. It’s a practice, like keeping your accounts in order or maintaining your shopfront.

The sites that consistently rank well in Singapore’s competitive search results are the ones that treat performance as a core business metric, not an afterthought. They measure regularly, set budgets, and make speed a non-negotiable part of every website decision.

The techniques in this guide are the same ones we apply on client sites at bestseo.sg. They work. But they only work if you actually implement them.

Need Help Speeding Up Your Site?

If you’ve run your PageSpeed Insights test and the numbers aren’t where you want them, or if the technical details in this guide feel like more than you want to tackle on your own, we’re happy to take a look. We offer a comprehensive site audit that includes a full page speed analysis with prioritised recommendations specific to your setup.

Drop us a message through our contact page. No obligation, no hard sell. Just a straight conversation about what’s slowing your site down and what it’ll take to fix it.

Jim Ng, Founder of Best SEO Singapore
Jim Ng

Founder of Best Marketing Agency and Best SEO Singapore. Started in 2019 cold-calling 70 businesses a day, scaled to 14, then leaned out to a 9-person AI-first team serving 146+ clients across 43 industries. Acquired Singapore Florist in 2024 and grew it to #1 rankings for competitive keywords. Every SEO strategy ships with his personal review.

Connect on LinkedIn

Want Results Like These for Your Site?

Book a free 30-minute strategy session. No pitch, just a real look at what is holding your organic traffic back.

Book A Free Growth Audit(Worth $2,500)