You can perform following activities to optimize your Magento 2 website and achieve better performance.
- Use a fast hosting provider
- Optimize dedicated/VPS server conffiguration
- Activate the OpCache module
- Use redis cache for session storage
- Enable GZIP compression
- Disable not-required modules
- Enable production mode
- Enable varnish full page cache
- Enable Flat categories and products
- Enable CSS, JS and html minification
- Enable JS and CSS merging
- Do not use JS bundling
- Use CDN for static content deployment
- Minimize TTFB
- Add Expires Headers
- Debug response time for each custom module/function/api
- Use css sprites to combine images
- Remove js/css comments to improve code performance
- Optimize images
- Use elasticsearch for search purpose
- Split the database
- Perform third-party extension audit
- Optimize poorly written code
- Use an Image LazyLoader
- Clean log tables (like report_event, report_viewed_product_index, customer_visitor)
- Update Magento to latest version
- Reduce number of DOM elements on the site
- Debug if there are any events which can be disabled.