Use caching and an optimized server to improve this.
Consider using caching or CDN services such as Cloudflare.
Try to keep the initial server response under 1s to get good performance scores.
For Render blocking JavaScript and CSS:
Minify CSS.
Remove unwanted CSS by creating multiple stylesheets and loading only required CSS files for the given page.
CSS and JavaScript that are loaded synchronously will be render blocking. Consider loading critical CSS first; using inline <style> tags and other not-so-important styles can be deferred by loading them later in the DOM.
For the non-critical CSS, you can use loadCSS to load it asynchronously.
The time it takes to load these elements if rendered above-the-fold will have a direct effect on LCP. There are a few ways to ensure these files are loaded as fast as possible:
Lazy load images, iframes, embeds, etc.
Can use the loading=”lazy” attribute for image tags or use some JS library that does the same thing.
Optimize and compress images
Consider not using an image in the first place. If it’s not relevant to the content, remove it.
Compress images.
Convert images into newer formats (JPEG 2000, JPEG XR, or WebP).
Use responsive images (srcset attribute to add more image sizes as per device screen size).
Consider using an image CDN.
Preload important resources
Some assets, such as fonts and images, are somewhere deep in CSS, and that may load later as per the loading sequence.
If you know that a particular resource should be prioritized, use <link rel=”preload”> to fetch it sooner. Many types of resources can be preloaded, but you should first focus on preloading critical assets, such as fonts, above-the-fold images or videos, and critical-path CSS or JavaScript.
First, check if your server already compresses files automatically. Most hosting platforms, CDNs, and reverse proxy servers either encode assets with compression by default or allow you to easily configure them. Cloudflare.com is one such service you can use.