Turbocharge Your Web: Mastering Performance JavaScript.🚀🚀🚀
Dharmendra Kumar
Posted on May 27, 2024
1. Performance Basics
Real vs. Perceived Performance
- Real Performance: Actual speed improvements such as smaller file sizes and quicker load times.
- Perceived Performance: Enhancements that make the website feel faster to the user, like progress indicators and immediate content display.
Example
Show a loading spinner while fetching data to make the user feel like something is happening immediately.
<div id="spinner">Loading...</div>
<div id="content" style="display: none;">
<!-- Dynamic content goes here -->
</div>
<script>
setTimeout(() => {
document.getElementById('spinner').style.display = 'none';
document.getElementById('content').style.display = 'block';
}, 2000); // Simulates a 2-second data fetch
</script>
Key Performance Concepts
- Source Order: Arrange HTML source to prioritize critical content.
- Critical Path: Minimize resources loaded initially to render the most important parts of the page quickly.
- Latency: Reduce delays in data transfer to improve loading times.
- Rendering: Understand how the browser processes and displays content.
Example: Critical Path Optimization
<link rel="stylesheet" href="critical.css">
<script src="critical.js" defer></script>
Sustainability and Performance
- Energy Efficiency: Optimized code reduces CPU usage and power consumption.
- Demand Efficiency: Perform computations only when and where necessary.
2. Improving Page Rendering
Reducing Page Loading Times
- Optimal Media Formats and Compression: Use WebP for images and compressed audio/video formats.
- Remove Unnecessary Audio: Muted videos should not load audio tracks.
-
Preload Video: Use the
preload
attribute to manage video loading behavior. - Adaptive Streaming: Deliver video in chunks to optimize bandwidth.
- Specify Dimensions: Prevent layout shifts by defining image and video dimensions.
- Font Choices: Use smaller font files by including only necessary glyphs.
Example: Lazy Loading Images
<img src="placeholder.jpg" data-src="image.jpg" alt="Lazy Loaded Image" loading="lazy">
<script>
document.addEventListener('DOMContentLoaded', () => {
const img = document.querySelector('img[data-src]');
img.src = img.dataset.src;
});
</script>
Improving "Time to Usable"
- Minimal Initial Load: Display essential content first.
- Background Data Loading: Load additional resources as needed.
- Lazy Loading: Defer loading of non-critical resources.
Example: Initial Load Optimization
<div id="main-content">
<!-- Essential content -->
</div>
<div id="additional-content" style="display: none;">
<!-- Additional content -->
</div>
<script>
window.addEventListener('load', () => {
document.getElementById('additional-content').style.display = 'block';
});
</script>
Enhancing Perceived Performance
- Smooth Transitions: Use animations to transition between states.
- Progress Indicators: Show spinners or progress bars.
- Efficient Event Handling: Use keydown events for quicker response.
Example: Progress Bar
<div id="progress-bar" style="width: 0; height: 4px; background: green;"></div>
<script>
function updateProgressBar() {
const progressBar = document.getElementById('progress-bar');
let width = 0;
const interval = setInterval(() => {
width += 10;
progressBar.style.width = width + '%';
if (width >= 100) clearInterval(interval);
}, 100);
}
updateProgressBar();
</script>
3. Measuring Performance
Key Metrics
- First Contentful Paint (FCP): Time to render the first bit of content.
- Speed Index: Average time for content to become visible.
- Total Blocking Time (TBT): Time spent blocked by scripts.
- Bounce Rate: Percentage of visitors who leave after viewing one page.
- Unique Users/Page Views: Metrics from analytics tools.
Performance Measurement Tools
- Google Lighthouse: Audits web pages for performance.
- Pagespeed Insights: Provides performance scores and suggestions.
- WebPageTest: Detailed performance analysis.
- Browser DevTools: Built-in tools for network and performance monitoring.
Example: Using Google Lighthouse
- Open Chrome DevTools.
- Navigate to the "Lighthouse" tab.
- Click "Generate report" to analyze the current page.
Performance Web APIs
- Performance Timeline API: Analyze various performance metrics.
- Navigation Timing API: Measure load times.
- User Timing API: Custom performance marks and measures.
- Resource Timing API: Detailed timing data for resource requests.
4. CSS and Performance
Techniques for Improving CSS Performance
- Conditional Loading: Use media queries to load CSS only when needed.
-
GPU Animations: Use properties like
transform
andopacity
for smoother animations. - Minimize Repaints: Optimize CSS to reduce layout shifts.
-
Use
will-change
andcontain
: Indicate elements likely to change to the browser for optimization.
Example: GPU Animation
<style>
.box {
transition: transform 0.5s;
}
.box:hover {
transform: translateX(100px);
}
</style>
<div class="box">Hover over me!</div>
5. JavaScript and Performance
Techniques for Improving JavaScript Performance
- Reduce JavaScript Usage: Limit the amount of JavaScript on your pages.
-
Conditional Loading: Load scripts only when needed using
async
anddefer
. - Remove Unused Code: Eliminate dead code.
- Code Splitting: Break down scripts into smaller parts for better loading.
Example: Deferred JavaScript
<script src="script.js" defer></script>
JavaScript Optimization
- Compression: Minify and compress JavaScript files.
- Efficient Algorithms: Use optimized algorithms for data processing.
- Event Delegation: Handle events efficiently to minimize performance impact.
Example: Event Delegation
<ul id="list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<script>
document.getElementById('list').addEventListener('click', (event) => {
if (event.target.tagName === 'LI') {
alert('Item clicked: ' + event.target.textContent);
}
});
</script>
Conclusion
Improving JavaScript performance is crucial for creating fast, efficient, and user-friendly web applications. By understanding and implementing these techniques, you can ensure your websites load quickly and provide a smooth user experience.
💖 💪 🙅 🚩
Dharmendra Kumar
Posted on May 27, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
javascript Angular 19 is Here, Next.js From China, NEWEST JavaScript Engine and more
November 24, 2024