برنامه نویسی

10 هک مدرن عملکرد وب که سرعت سایت ما را تا 300٪ افزایش داد 🚀

ماه گذشته، سایت تجارت الکترونیک ما با زمان بارگذاری 6.5 ثانیه دست و پنجه نرم می کرد. امروز در 2.1 ثانیه بارگیری می شود. در اینجا دقیقاً چگونه این کار را انجام دادیم، با نمونه‌های کد واقعی و نتایج.

مشکل

امتیازات Lighthouse ما شرم آور بود:

  • عملکرد: 45
  • اولین رنگ محتوایی: 3.2 ثانیه
  • بزرگترین رنگ محتوایی: 6.5 ثانیه
  • زمان تعامل: 7.8 ثانیه

کاربران حتی قبل از بارگیری صفحه را ترک می کردند. در اینجا نحوه رفع آن آمده است.

1. انقلاب بهینه سازی تصویر 🖼️

قبل از:

 src="hero-image.jpg" alt="Product showcase" />
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از:



  
    srcset="hero-image.webp" 
    type="image/webp"
  />
   
    src="hero-image.jpg"
    alt="Product showcase"
    loading="lazy"
    width="800"
    height="600"
  />

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: 40 درصد کاهش در زمان بارگذاری تصویر

2. استخراج CSS بحرانی ⚡

اکنون CSS بحرانی را درون خط می کنیم و سبک های غیر بحرانی را به تعویق می اندازیم:


  
  
    /* Only styles needed for above-the-fold content */
    .hero { ... }
    .nav { ... }
  

  
   
    rel="preload" 
    href="styles.css" 
    as="style" 
    onload="this.onload=null;this.rel="stylesheet""
  />

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: First Paint 1.2 ثانیه بهبود یافت

3. برنامه غذایی جاوا اسکریپت 🏋️‍♂️

قبل از:

"jquery.min.js">
"massive-slider.js">
"analytics.js">
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از:


"module">
  // Dynamic import when needed
  const showSlider = async () => {
    const { createSlider } = await import('./tiny-slider.js');
    createSlider();
  }

  // Load on user interaction
  document.querySelector('.slider-btn')
    .addEventListener('click', showSlider);

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: حجم بار جاوا اسکریپت 65 درصد کاهش یافت

4. استراتژی ذخیره هوشمند 🧠

// Service Worker Setup
const CACHE_VERSION = 'v1.2.0';

const CACHED_ASSETS = [
  '/',
  '/styles.css',
  '/app.js',
  '/fonts/roboto.woff2'
];

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open(CACHE_VERSION)
      .then(cache => cache.addAll(CACHED_ASSETS))
  );
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: بازدیدهای مکرر 80 درصد سریع‌تر بارگیری می‌شوند

5. بهینه سازی بارگذاری فونت 📝

 
  rel="preload" 
  href="/fonts/roboto.woff2" 
  as="font" 
  type="font/woff2" 
  crossorigin
/>


  /* Font loading strategy */
  @font-face {
    font-family: 'Roboto';
    font-display: swap;
    src: url('/fonts/roboto.woff2') format('woff2');
  }

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: دیگر خبری از سوسو زدن فونت نیست، نمایش متن سریعتر

6. تقسیم کد در سطح کامپوننت 📦

// React example
const ProductGallery = React.lazy(() => 
  import('./ProductGallery')
);

function Shop() {
  return (
    <Suspense fallback={<Spinner />}>
      <ProductGallery />
    </Suspense>
  );
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: اندازه باندل اولیه 45 درصد کاهش یافت

7. پیش واکشی هوشمند 🔄

// Prefetch on hover
const prefetchOnHover = (event) => {
  const link = event.target.closest('a');
  if (link && !prefetched.has(link.href)) {
    const prefetcher = document.createElement('link');
    prefetcher.rel = 'prefetch';
    prefetcher.href = link.href;
    document.head.appendChild(prefetcher);
    prefetched.add(link.href);
  }
}

document.addEventListener('mouseover', prefetchOnHover);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: انتقال صفحه فورا احساس می شود

8. API Response Optimization 📡

// Implementing field selection
const fetchProduct = async (id) => {
  const fields = ['name', 'price', 'thumbnail'];
  const response = await fetch(
    `/api/products/${id}?fields=${fields.join(',')}`
  );
  return response.json();
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: پاسخ های API 60٪ کوچکتر است

9. رژیم غذایی مدیریت دولتی 🏃‍♂️

// Before: Everything in Redux
const store = createStore(rootReducer);

// After: Only what's needed
function ProductPage() {
  const [product, setProduct] = useState(null);
  const globalCart = useSelector(state => state.cart);

  // Local state for UI
  const [isLoading, setIsLoading] = useState(false);
  const [selectedVariant, setSelectedVariant] = useState(null);

  // ...
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: اندازه فروشگاه Redux 70٪ کاهش یافت

10. ایجاد بهینه سازی 🛠️

// webpack.config.js
module.exports = {
  optimization: {
    moduleIds: 'deterministic',
    runtimeChunk: 'single',
    splitChunks: {
      cacheGroups: {
        vendor: {
          test: /[\\/]node_modules[\\/]/,
          name: 'vendors',
          chunks: 'all',
        },
      },
    },
  },
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه: 30٪ کش بهتر، ساخت های کوچکتر

نتایج 📊

پس از اجرای این تغییرات:

  • عملکرد فانوس دریایی: 94
  • اولین رنگ محتوایی: 1.1 ثانیه
  • بزرگترین رنگ محتوا: 2.1 ثانیه
  • زمان تعامل: 2.8 ثانیه

خوراکی های کلیدی 🎯

  1. با اندازه گیری شروع کنید
  2. تصاویر را به شدت بهینه کنید
  3. جاوا اسکریپت را هوشمندانه بارگیری کنید
  4. کش استراتژیک
  5. به طور مداوم نظارت کنید

این را مفید یافتید؟ برای نکات عملکرد وب بیشتر دنبال کنید!

اگر از هر یک از این تکنیک ها استفاده می کنید، ❤️ را رها کنید.

بزرگترین چالش عملکرد شما چیست؟ در نظرات به من اطلاع دهید!

#webdev #عملکرد #javascript #webperf #بهینه سازی

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا