I have been doing some level of optimisations for my website (romanempiretimes.com) and I believe I’m starting to reach a limit of the things I can do on Ghost (Pro), although PageSpeed and Core Web Vitals showcase there’s room for improvement.
I am using the Source theme, and would like to ask if there are any advice you can give me for some extra PageSpeed scores, and more importantly, if there’s a fix for the INP Core Web Vital, so it can be at a safer zone (I have a bunch of links just over 200ms); I am fairly certain it has to do with the loading delay of the subscribe and search functions. I removed the latter till I figure sth out, but subscribe is still causing me issues — is there a way to fix it, other than pointing to a new page directly?
PS. I am also managing high-traffic websites on WordPress, with PageSpeed scores of 98+, I do consider it important and have seen benefits from it, hence the gravity of the situation for me. If the only solution is to get a self-hosted Ghost version, please do suggest that, although I’d really prefer to stay with (Pro) for easier management.
Thanks Cathy, I’ve actually used quite a lot of your info (especially on the announcement bar), I wondered though if there’s something else for me there. I know Ghost (Pro) is not allowing for maximum flexibility regarding Cloudflare (I might be wrong?) and any information on making it even faster, would be greatly appreciated. I feel that a ‘plugin’ like WP Rocket/W3 Total Cache, which allows for full control of a lot of PageSpeed related elements, is dearly missed on (Pro).
Just thought I’d chime in here, since I have spent a lot of time lately on page speed in Ghost
Ghost(Pro)'s CDN and caching is one of the most effective ones out there (saying that as someone who also runs a Ghost hosting service and has looked at literally all the options out there). Fastly, the service they are using, is insanely good at caching things and delivering it quickly to your users. So, realistically, you won’t need any other caching or CDN solution. In fact, they would probably work against each other.
What PageSpeed elements are you specifically looking to influence?
Two minute audit:
You need a srcset on your logo, which is HUGE. If you can’t srcset (can’t edit the theme), then pick a size that represents no bigger than it might reasonably appear, and resize the uploaded image to that. Switch to webp while you’re at it.
You’re running a ton of extra code in code injection. Think carefully about whether all of it needs to run on all pages, and eliminate (or at least switch to ‘defer’) anything that’s less important.
I’m more interested in the below which I don’t know how to influence (I don’t think we have access to our Fastly CDN in Pro), and WP Rocket for example has a simple toggle that ‘fixes’ them instantly:
Reduce JavaScript execution time
Minimize main-thread work
Reduce the impact of third-party code (I can load Tally for Forms on the forms pages alone, but how can I handle AdSense, Analytics, Google’s Consent, Stripe, etc. that need to run on all pages?)
Largest Contentful Paint element (aside from image optimisation, can’t I speed this up somehow?)
You don’t have control of Stripe, unless you’re going to replace ghost_head (I’ll spare you another link to my site). But you should definitely load Tally only on the forms page (put it in the page’s code injection, not site-wide).
LCP often /is/ an image optimization problem, so I’d start there. You could tweak the srcsets on the images (trying to get the mobile devices to load the ~600px image instead of the ~900px image despite being at 2x resolution), but I don’t think there are huge gains to be had there.
Check your GPT - looks like you’re loading it twice with two different tags. I’m guessing there’s a way to load two tags at once.