- web.dev https://web.dev/measure/
- websu.io (*) (monitor) https://websu.io/
- webpagetest.org https://www.webpagetest.org/
- Pingdom Website Speed Test https://tools.pingdom.com/
- gtmetrix https://gtmetrix.com/
- foo.software https://www.foo.software/lighthouse
- pagespeed.web.dev https://pagespeed.web.dev
- keycdn.com performance https://tools.keycdn.com/performance
- keycdn.com speed https://tools.keycdn.com/speed?
- dnsperf.com https://www.dnsperf.com/dns-speed-benchmark/
- dnsmap.io https://dnsmap.io/#A/brandsmadrid.com
- webvitals.dev https://webvitals.dev/cls
- https://check.lscache.io/
- yellowlab https://yellowlab.tools/ https://github.com/YellowLabTools/YellowLabTools
- websu (*) https://github.com/websu-io/websu
- AutoWebPerf https://github.com/GoogleChromeLabs/AutoWebPerf
- Sitespeed.io https://www.sitespeed.io https://www.sitespeed.io/documentation/sitespeed.io https://github.com/sitespeedio/sitespeed.io
- The coach https://github.com/sitespeedio/coach
- Browsertime - Your browser, your page, your scripts! https://github.com/sitespeedio/browsertime
- @foo-software/lighthouse-check https://github.com/foo-software/lighthouse-check
- Performance testing framework (*) https://github.com/radum/performance-testing-framework
- npm Lighthouse https://www.npmjs.com/package/lighthouse
- Lighthouse CI https://www.npmjs.com/package/lighthouse-ci
- Lazy Loading Images – The Complete Guide https://imagekit.io/blog/lazy-loading-images-complete-guide/
- Lazy-loading images https://web.dev/lazy-loading-images/
- The Complete Guide to Lazy Loading Images https://css-tricks.com/the-complete-guide-to-lazy-loading-images/
- Find Unused JavaScript And CSS With The Coverage Tab https://developer.chrome.com/docs/devtools/coverage/
- clearcss https://rapidload.io/
- Front-End Performance Checklist https://github.com/thedaviddias/Front-End-Performance-Checklist
- Measure Google Web Vitals https://www.sitespeed.io/documentation/sitespeed.io/google-web-vitals/
- Web Vitals https://web.dev/vitals
- The Ultimate WordPress Speed Optimization Guide https://wpjohnny.com/ultimate-wordpress-speed-optimization-guide/
- How To Add DNS Prefetch In WordPress (For Third-Party Domains) https://onlinemediamasters.com/dns-prefetch-wordpress/
- 25 Ways To Fix A Slow WordPress Site And Pass Core Web Vitals https://onlinemediamasters.com/slow-wordpress-site/
- Profiling site speed with the Chrome DevTools Performance tab https://www.debugbear.com/blog/devtools-performance
- Understanding Core Web Vitals https://www.debugbear.com/docs/metrics/core-web-vitals
- Awesome web performance list https://github.com/geldmacher/awesome-performance
- Awesome WPO Awesome https://github.com/davidsonfellipe/awesome-wpo#readme
- Awesome Page Speed Metrics Awesome (*) https://github.com/csabapalfi/awesome-pagespeed-metrics#readme
- Resource Hints - What is Preload, Prefetch, and Preconnect? https://www.keycdn.com/blog/resource-hints
For the browser to download resources more efficiently, we can indicate how to optimize these different steps. dns-prefetch: indicates to the browser that it should perform the resolution of a given domain name (determining the IP to contact) before that domain is used to download resources. preconnect: indicates to the browser that it should connect a given origin, before that domain is used to download resources. Preconnecting involves, like – dns-prefetch, the DNS resolution, but also the TCP handshake and TLS negotiation (if the page is secure). prefetch: indicates to the browser that it can download a given resource, even if it is not detected in the page. The resource is downloaded with a low priority. preload: tells the browser that it must download a given resource as soon as possible, with high priority.
- Create subdomain
- Create ssl verification for subdomain
- Go to file manager subdomain, create: index.php and type echo $_SERVER["DOCUMENT_ROOT"];
- Go to subdomain url in browse, Copy dir path
- Go to wp-admin/options.php. Search upload_url_path / upload_path, put dir path into Store uploads in this folder, put subdomain into Full URL path to files
- Test Media Upload and image in front end
- Move all folder and files in wp-content/uploads into subdomain in file manager
- Use better search and replace to replace Old link to new link: maindomain/wp-content/uploads/ -> subdomain/
- Useful links: https://webmtp.com/toi-uu-hoa-website-wordpress-tren-pagespeed-insights/ link: https://wordpressvn.com/t/huong-dan-toi-uu-flatsome-tang-diem-toi-da-google-insight/2848 link: https://aaron.kr/content/code/move-wordpress-media-uploads-to-a-subdomain/
<link rel="preload" as="script" href="async_script.js"onload="var script = document.createElement('script'); script.src = this.href; document.body.appendChild(script);">
<link rel="preload" as="style" href="async_style.css" onload="this.rel='stylesheet'">
https://pagespeedchecklist.com/defer-google-analytics
// https://constantsolutions.dk/2020/06/delay-loading-of-google-analytics-google-tag-manager-script-for-better-pagespeed-score-and-initial-load/
document.addEventListener('DOMContentLoaded', () => {
/** init gtm after 3500 seconds - this could be adjusted */
setTimeout(initGTM, 3500);
});
document.addEventListener('scroll', initGTMOnEvent);
document.addEventListener('mousemove', initGTMOnEvent);
document.addEventListener('touchstart', initGTMOnEvent);
function initGTMOnEvent(event) {
initGTM();
event.currentTarget.removeEventListener(event.type, initGTMOnEvent); // remove the event listener that got triggered
}
function initGTM() {
if (window.gtmDidInit) {
return false;
}
window.gtmDidInit = true; // flag to ensure script does not get added to DOM more than once.
const script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.onload = () => {
dataLayer.push({ event: 'gtm.js', 'gtm.start': new Date().getTime(), 'gtm.uniqueEventId': 0 });
}; // this part ensures PageViews is always tracked
script.src = 'https://www.googletagmanager.com/gtm.js?id=YOUR-GTM-ID-HERE';
document.head.appendChild(script);
}