<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fairy Jerry</title>
    <description>The latest articles on DEV Community by Fairy Jerry (@fairy_jerry_7b77236c96c77).</description>
    <link>https://dev.to/fairy_jerry_7b77236c96c77</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4028848%2F424f1ebd-f13d-4c24-9e10-7ab8d82f1cd2.png</url>
      <title>DEV Community: Fairy Jerry</title>
      <link>https://dev.to/fairy_jerry_7b77236c96c77</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fairy_jerry_7b77236c96c77"/>
    <language>en</language>
    <item>
      <title>How I Got My WordPress Download Site Loading in Under 2 Seconds</title>
      <dc:creator>Fairy Jerry</dc:creator>
      <pubDate>Thu, 29 Oct 2026 17:47:03 +0000</pubDate>
      <link>https://dev.to/fairy_jerry_7b77236c96c77/how-i-got-my-wordpress-download-site-loading-in-under-2-seconds-2ab7</link>
      <guid>https://dev.to/fairy_jerry_7b77236c96c77/how-i-got-my-wordpress-download-site-loading-in-under-2-seconds-2ab7</guid>
      <description>&lt;p&gt;A few months ago I ran a speed test on my WordPress site and winced: Largest Contentful Paint over 4 seconds on mobile, and a Time to First Byte that made every page feel sluggish. The site is a download site — pages full of screenshots, version tables, and big download buttons — so visitors arrive impatient and leave fast if the page stalls.&lt;/p&gt;

&lt;p&gt;This post walks through the exact steps I took to fix it, using my own site as the running example: &lt;a href="https://pojavvlauncherapk.net/" rel="noopener noreferrer"&gt;https://pojavvlauncherapk.net/&lt;/a&gt; — a WordPress site running the Kadence theme on LiteSpeed hosting. Nothing here is theory; every step below is something I changed and measured.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Measure first, optimize second
&lt;/h2&gt;

&lt;p&gt;Before touching anything, I recorded baselines in PageSpeed Insights and GTmetrix: LCP, TTFB, total page weight, and request count. I re-ran the same tests after each change so I could tell which tweaks actually moved the needle and which were placebo. If you take one habit from this post, make it this one: never optimize blind.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Turn on real page caching with LiteSpeed Cache
&lt;/h2&gt;

&lt;p&gt;Because the server runs LiteSpeed, the LiteSpeed Cache plugin can cache pages at the server level instead of in PHP — repeat visitors get served static HTML without WordPress even booting. In the plugin's Cache settings I enabled page caching, turned caching off for logged-in users (nearly all my traffic is guests, and caching logged-in pages adds invalidation headaches), and set a 30-day browser cache TTL for static assets.&lt;/p&gt;

&lt;p&gt;One mistake I made early on: I had both a PHP-level cache plugin and LiteSpeed Cache active, and they fought over the same pages. Pick one caching layer. On LiteSpeed hosting, LiteSpeed Cache wins — it is the only one that hooks into the web server itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Add object caching so the database stops repeating itself
&lt;/h2&gt;

&lt;p&gt;Page cache handles guests, but menus, widgets, and option lookups still query the database on cache misses. I enabled Redis object caching through the plugin's Object Cache setting, pointed at the Redis instance my host provides, so repeated queries are served from memory. The practical effect: TTFB on uncached pages dropped noticeably, and wp-admin felt snappier too. If your host does not offer Redis, Memcached does the same job — the point is to stop asking MySQL the same question on every single request.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Fix the images — the biggest win on a download site
&lt;/h2&gt;

&lt;p&gt;Images were roughly 70 percent of my page weight. Screenshots and feature banners had been uploaded as full-resolution PNGs, some over a megabyte each. Three changes fixed it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bulk conversion to WebP.&lt;/strong&gt; I used the image optimization feature inside LiteSpeed Cache, which serves WebP with the original as fallback. File sizes typically dropped 60 to 80 percent with no visible quality loss.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lazy loading below the fold.&lt;/strong&gt; Screenshots further down the page no longer compete with the hero content for bandwidth. I excluded the logo and the above-the-fold banner from lazy loading so LCP was not delayed by it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit width and height attributes&lt;/strong&gt; on images to eliminate layout shift, which PageSpeed had been flagging under CLS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Homepage weight fell from about 3.8 MB to under 1.2 MB. That single change did more for mobile LCP than everything else combined.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Put a CDN in front of static assets
&lt;/h2&gt;

&lt;p&gt;Caching helps repeat visitors; a CDN helps everyone else by serving images, CSS, and JavaScript from a location near the visitor. I connected the QUIC.cloud CDN through the LiteSpeed Cache plugin — it integrates natively, just a DNS change and an API key, no extra plugin needed. Static assets now load from edge nodes instead of making a visitor on another continent wait on my single origin server for a stylesheet. Cloudflare works on the same principle if you prefer it; either way, do not serve static files from one box to the whole planet.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Trim the theme and plugin fat
&lt;/h2&gt;

&lt;p&gt;Kadence is already a light theme, but I still audited everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removed four plugins I was not actively using — an old slider, two analytics plugins, and a social widget. Each one had been adding a stylesheet or script to every page load.&lt;/li&gt;
&lt;li&gt;Cut Google Fonts down to two weights of one family, loaded with &lt;code&gt;display=swap&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Disabled WordPress emojis and embeds — small wins that remove render-blocking requests.&lt;/li&gt;
&lt;li&gt;Deferred non-critical JavaScript in the plugin's Page Optimization settings, then tested every download button, because deferred scripts are the classic way to break interactive elements. Two scripts needed excluding from deferral.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Quiet the background noise: heartbeat, revisions, transients
&lt;/h2&gt;

&lt;p&gt;The WordPress admin-ajax heartbeat, unlimited post revisions, and expired transients add database load that slows down even cached sites, because cache misses still happen. I capped revisions with &lt;code&gt;WP_POST_REVISIONS&lt;/code&gt;, limited the heartbeat to post-edit screens, and scheduled a weekly database cleanup. None of this shows up directly in a speed test, but it keeps TTFB stable as the site grows instead of degrading month by month.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changed
&lt;/h2&gt;

&lt;p&gt;After working through this list on &lt;a href="https://pojavvlauncherapk.net/" rel="noopener noreferrer"&gt;https://pojavvlauncherapk.net/&lt;/a&gt;, mobile LCP went from 4.2s to 1.7s, page weight dropped by roughly two-thirds, and the PageSpeed performance score moved from red to green. Ranked by impact: image optimization first, then page caching, then the CDN. Everything else was incremental — worth doing, but not where you should start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist if you are doing this today
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Record your baseline: LCP, TTFB, page weight, request count.&lt;/li&gt;
&lt;li&gt;Enable server-level page caching; remove competing cache plugins.&lt;/li&gt;
&lt;li&gt;Add object caching (Redis or Memcached).&lt;/li&gt;
&lt;li&gt;Convert images to WebP, lazy-load below the fold, set dimensions.&lt;/li&gt;
&lt;li&gt;Put static assets behind a CDN.&lt;/li&gt;
&lt;li&gt;Audit plugins and fonts; defer non-critical JavaScript and test interactions.&lt;/li&gt;
&lt;li&gt;Tame the heartbeat, revisions, and transients.&lt;/li&gt;
&lt;li&gt;Re-measure after every step.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Speed work is never finished — every new plugin and every uploaded image is a chance to regress. But with caching, optimized images, and a CDN in place, the site has headroom now instead of living on the edge of a timeout.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>performance</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
