On shared hosting you cannot change the server, but most WordPress slowness comes from things you do control: no page cache, oversized images, a bloated database and a few heavy plugins. Work through these ten steps in order and measure after each one, so you know which change actually made the difference.

Step 1: take a baseline and a backup

Pick three representative URLs: the home page, a typical post or product, and a category page. Test each in PageSpeed Insights on mobile two or three times and note LCP and the server response time. Our guide to measuring website speed explains what each number means. Then take a full backup, including the database, because several steps below change both settings and data.

Step 2: switch to a current PHP version

Newer PHP versions run WordPress faster and still receive security fixes, and every uncached request benefits. In cPanel, open the PHP version selector (called Select PHP Version on CloudLinux servers, MultiPHP Manager on others) and choose the newest PHP 8 version your theme and plugins support. Switch at a quiet hour, then check the main pages and Tools > Site Health. If the selector lists extensions, make sure OPcache is enabled; it keeps compiled PHP code in memory instead of recompiling it on each request. If you cannot see a selector, ask support to change the version for you.

Step 3: turn on page caching

This is usually the step with the largest effect. The right plugin depends on your web server:

  • On LiteSpeed (on EngHosting's WordPress plans, LiteSpeed is listed from the Advanced plan upwards): install the official LiteSpeed Cache plugin and make sure Enable Cache is on under LiteSpeed Cache > Cache. The default settings are a sensible start, and WooCommerce cart and checkout pages are left uncached automatically.
  • On Apache: use one well-maintained page-cache plugin that saves pages as static HTML. The page cache in LiteSpeed Cache works only on a LiteSpeed server or behind LiteSpeed's QUIC.cloud CDN.
  • Never run two page-cache plugins at once. They conflict and can serve stale or broken pages.

To check it is working, open a page in a private window, open the browser's developer tools on the Network tab and reload twice. On LiteSpeed, the page request should carry the header x-litespeed-cache: hit.

Step 4: add page optimisation one option at a time

Caching plugins also offer CSS and JavaScript minification, combining and deferral. These can help, but they are the most common cause of broken menus, sliders and forms. Enable one option, check the key pages including the mobile menu and contact form, and keep only what works. Do not lazy-load the main image at the top of the page: recent WordPress versions try to load it with high priority, and delaying it hurts LCP.

Step 5: fix the images

  • Resize before uploading: about 1,600 to 2,000 pixels wide is plenty for a full-width banner and around 1,200 for images inside articles. WordPress scales down uploads larger than 2,560 pixels, which is still more than most layouts need.
  • Use WebP, supported by WordPress since version 5.8, or AVIF since 6.5 where the server's image library supports it. Convert before uploading, or use an image optimisation plugin that also converts existing images.
  • Compress: a few hundred kilobytes is a reasonable ceiling for a photo, and a single multi-megabyte banner is often the whole LCP problem.
  • Keep width and height on images (the editor adds them) so the layout does not jump while loading.

Step 6: clean the database

  • Limit revisions by adding define('WP_POST_REVISIONS', 5); to wp-config.php, then remove old revisions with a database cleanup plugin.
  • Delete spam and trashed comments, auto-drafts and expired transients.
  • Check autoloaded options: data left behind by removed plugins can be loaded on every request. Recent WordPress versions flag this in Site Health.
  • Store and form plugins keep logs of completed scheduled tasks; clear old entries from the plugin's own tools.

Step 7: audit plugins by weight, not by count

Twenty light plugins can cost less than one heavy one. To find the expensive ones:

  • Install Query Monitor temporarily, open your slowest pages and see which plugins add the most queries and processing time; remove it afterwards.
  • Remove overlap: two SEO plugins, several slider or form plugins, or a security plugin running full scans on a server that already scans at server level.
  • Look for plugins that load scripts on every page but are used on one, such as form, slider and page-builder add-ons.
  • Delete what you do not use instead of only deactivating it.

Step 8: replace WP-Cron with a real cron job

By default WordPress checks for scheduled tasks during page visits, which adds work to visitors' requests and runs irregularly on quiet sites. Add define('DISABLE_WP_CRON', true); to wp-config.php, then in cPanel > Cron Jobs create a job every 10 or 15 minutes with a command like wget -q -O /dev/null https://example.com/wp-cron.php, replacing the domain with yours. Scheduled posts, emails and store tasks then run on time without slowing anyone's page view.

Step 9: tame the Heartbeat and third-party scripts

The WordPress Heartbeat API sends a request every 15 to 60 seconds while the dashboard is open. With several editors logged in, these uncached requests add up on a plan with process limits; LiteSpeed Cache's Toolbox > Heartbeat settings let you slow it down, while keeping it in the post editor for autosave. On the visitor side, chat widgets, social embeds and stacked tracking tags often weigh more than the theme itself; keep only the ones you use.

Step 10: find out whether the plan is the limit

On CloudLinux plans, cPanel's Resource Usage page shows whether the account hits its CPU, memory or entry-process limits. An occasional fault during a spike is normal; frequent faults after all the steps above mean the site needs more room. According to the WordPress hosting plan pages, LiteSpeed, CloudLinux and Imunify360 are listed from the Advanced plan upwards, and higher plans add sites and storage. If most of your traffic is logged in, compare WordPress on shared hosting vs a VPS.

Where each step pays off

ChangeMain effect
Page cacheTTFB for visitors
ImagesLCP on mobile
PHP version and OPcacheUncached pages, dashboard
Database cleanupEvery uncached request
Fewer scriptsINP and render time
Real cron jobFewer slow page views

For background on the server side, read what LiteSpeed changes compared with Apache, and for choosing a plan, see our WordPress hosting guide.

Ready to start with EngHosting?

Fast, secure hosting with 24/7 Arabic support. Refund terms are in our acceptable use policy.

Order Now