Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
High Performance JavaScript

High Performance JavaScript

Build Faster Web Application Interfaces
توسط Nicholas C. Zakas 2010 232 صفحات
4.11
500+ امتیازها
گوش دادن

نکات کلیدی

1. بارگذاری کارآمد جاوااسکریپت برای کاهش درخواست‌های HTTP و بهبود سرعت صفحه

تعداد درخواست‌های HTTP مورد نیاز برای رندر صفحه را کاهش دهید.

ترکیب و موقعیت‌دهی اسکریپت‌ها. چندین فایل جاوااسکریپت را به یک فایل واحد ادغام کنید تا درخواست‌های HTTP را به حداقل برسانید. تگ‌های اسکریپت را در انتهای بدنه HTML قرار دهید تا صفحه قبل از اجرای اسکریپت‌ها به‌طور بصری بارگذاری شود. از تکنیک‌های بارگذاری غیرهمزمان مانند درج اسکریپت دینامیک یا ویژگی defer در صورت امکان استفاده کنید.

فشرده‌سازی و بهینه‌سازی. از ابزارهایی مانند YUI Compressor برای حذف کاراکترها و فضای خالی غیرضروری از فایل‌های جاوااسکریپت استفاده کنید. فشرده‌سازی gzip را در سرور وب خود فعال کنید تا اندازه فایل‌ها را بیشتر کاهش دهید. در نظر داشته باشید که از شبکه تحویل محتوا (CDN) برای ارائه دارایی‌های استاتیک، از جمله فایل‌های جاوااسکریپت، از سرورهای جغرافیایی توزیع‌شده برای تحویل سریع‌تر استفاده کنید.

استراتژی‌های کش را پیاده‌سازی کنید. هدرهای کش مناسب را برای فایل‌های جاوااسکریپت تنظیم کنید تا مرورگرها بتوانند آن‌ها را به‌صورت محلی ذخیره کنند. از نسخه‌بندی یا زمان‌سنجی در نام فایل‌ها برای مجبور کردن به‌روزرسانی‌ها در صورت لزوم استفاده کنید. برای دستگاه‌های موبایل با قابلیت‌های کش محدود، در نظر داشته باشید که از کش برنامه HTML5 یا مکانیزم‌های ذخیره‌سازی سمت کلاینت استفاده کنید.

2. بهینه‌سازی دسترسی به داده‌ها و مدیریت دامنه برای اجرای سریع‌تر

متغیرهای محلی همیشه سریع‌ترین دسترسی را در داخل یک تابع دارند، در حالی که متغیرهای جهانی معمولاً کندترین هستند.

کاهش پیمایش زنجیره دامنه. متغیرهای خارج از دامنه که به‌طور مکرر دسترسی دارند را در متغیرهای محلی ذخیره کنید. از استفاده از دستور with و eval() خودداری کنید، زیرا می‌توانند زنجیره دامنه را گسترش دهند و اجرای کد را کند کنند. از بستن‌ها به‌طور معقول استفاده کنید، زیرا آن‌ها ارجاعات به دامنه خارجی خود را حفظ می‌کنند و می‌توانند بر استفاده از حافظه تأثیر بگذارند.

بهینه‌سازی دسترسی به اشیاء و آرایه‌ها. از نوتیشن نقطه‌ای به‌جای نوتیشن براکت برای دسترسی به ویژگی‌های اشیاء با شناسه‌های معتبر و شناخته‌شده استفاده کنید. طول آرایه‌ها را در حلقه‌های for ذخیره کنید تا از جستجوی مکرر ویژگی‌ها جلوگیری شود. در نظر داشته باشید که از اشیاء یا آرایه‌های ساده به‌جای ساختارهای داده پیچیده‌تر استفاده کنید زمانی که ذخیره‌سازی کلید-مقدار ساده کافی است.

استفاده از نوتیشن ادبی. از ادبیات اشیاء و آرایه‌ها به‌جای معادل‌های سازنده آن‌ها (به‌عنوان مثال، {} به‌جای new Object()) استفاده کنید. این نه‌تنها خوانایی را بهبود می‌بخشد بلکه می‌تواند در بسیاری از موتورهای جاوااسکریپت سریع‌تر باشد.

3. کاهش دستکاری DOM برای بهبود عملکرد

دسترسی و دستکاری DOM بخشی مهم از برنامه‌های وب مدرن است. اما هر بار که از ECMAScript به دنیای DOM عبور می‌کنید، هزینه‌ای دارد.

عملیات DOM را دسته‌بندی کنید. با ایجاد تغییرات در یک قطعه سند یا گره کپی‌شده قبل از به‌روزرسانی DOM زنده، دستکاری مستقیم DOM را به حداقل برسانید. این کار تعداد reflow و repaint را که هزینه محاسباتی بالایی دارند، کاهش می‌دهد.

از انتخاب‌گرهای کارآمد استفاده کنید. از روش‌های بومی DOM مانند getElementById() و querySelector() به‌جای روش‌های عمومی‌تر استفاده کنید. هنگام استفاده از کتابخانه‌ها، اطمینان حاصل کنید که آن‌ها از این روش‌های بومی سریع‌تر در دسترس استفاده می‌کنند. ارجاعات DOM را برای عناصری که به‌طور مکرر دسترسی دارند، ذخیره کنید.

بهینه‌سازی مدیریت رویدادها. با اتصال شنوندگان رویداد به عناصر والد به‌جای عناصر فرزند فردی، مدیریت رویدادها را پیاده‌سازی کنید. این کار تعداد شنوندگان رویداد را کاهش می‌دهد و عملکرد را بهبود می‌بخشد، به‌ویژه برای عناصر اضافه‌شده به‌طور دینامیک.

4. پیاده‌سازی الگوریتم‌های کارآمد و تکنیک‌های کنترل جریان

در واقع فقط دو عامل وجود دارد: کار انجام‌شده در هر تکرار و تعداد تکرارها.

بهینه‌سازی حلقه‌ها. کار انجام‌شده در هر تکرار را با انتقال کد ثابت به خارج از حلقه به حداقل برسانید. در صورت امکان از حلقه‌های معکوس while استفاده کنید، زیرا معمولاً سریع‌تر از حلقه‌های for هستند. در نظر داشته باشید که از روش‌های آرایه‌ای مانند forEach()، map() و reduce() برای تکرارهای تمیزتر و احتمالاً سریع‌تر استفاده کنید.

شرایط مناسب را انتخاب کنید. از عبارات switch به‌جای زنجیره‌های طولانی if-else هنگام کار با چندین مقدار گسسته استفاده کنید. برای شرایط پیچیده، در نظر داشته باشید که از جداول جستجو یا بیت‌ماسک‌ها برای ارزیابی سریع‌تر استفاده کنید.

پیاده‌سازی حافظه‌سازی. نتایج فراخوانی‌های پرهزینه تابع را ذخیره کنید تا از محاسبات تکراری جلوگیری شود. این کار به‌ویژه برای توابع بازگشتی یا عملیات‌هایی که به‌طور مکرر با ورودی‌های یکسان فراخوانی می‌شوند، مفید است.

5. انتخاب فرمت داده مناسب برای عملکرد بهینه Ajax

JSON در مقایسه با XML مزایای زیادی دارد. این فرمت بسیار کوچکتر است و بخش کمتری از اندازه کل پاسخ به ساختار اختصاص داده شده و بیشتر به داده‌ها مربوط می‌شود.

JSON را به XML ترجیح دهید. JSON فشرده‌تر و سریع‌تر از XML تجزیه می‌شود. در صورت امکان، از JSON-P (JSON با padding) برای تجزیه سریع‌تر، به‌ویژه هنگام کار با مجموعه‌های داده بزرگ، استفاده کنید. برای مجموعه‌های داده بسیار بزرگ، در نظر داشته باشید که از فرمت‌های سفارشی با جداکننده‌های حداقلی استفاده کنید.

انتقال داده را بهینه کنید. از درخواست‌های GET برای عملیات ایپیدمیک و POST برای بارهای بزرگ‌تر استفاده کنید. استراتژی‌های کش مناسب را برای پاسخ‌های Ajax پیاده‌سازی کنید تا از درخواست‌های غیرضروری شبکه جلوگیری شود. در نظر داشته باشید که از تکنیک‌هایی مانند multipart XHR برای بسته‌بندی چندین منبع در یک درخواست واحد استفاده کنید.

داده‌ها را به‌طور کارآمد مدیریت کنید. پاسخ‌های JSON را با استفاده از روش‌های بومی مانند JSON.parse() در صورت در دسترس بودن تجزیه کنید. برای مجموعه‌های داده بزرگ، از رندرینگ تدریجی برای بهبود عملکرد درک‌شده استفاده کنید. از کارگران وب برای وظایف تجزیه یا پردازش زمان‌بر استفاده کنید تا UI پاسخگو باقی بماند.

6. ایجاد رابط‌های پاسخگو با مدیریت رشته UI مرورگر

هیچ وظیفه جاوااسکریپت نباید بیش از 100 میلی‌ثانیه طول بکشد.

وظایف طولانی را تقسیم کنید. از setTimeout() یا setInterval() برای تقسیم عملیات طولانی به قطعات کوچک‌تر استفاده کنید تا UI پاسخگو باقی بماند. در نظر داشته باشید که از کارگران وب برای وظایف پردازشی سنگین که به دسترسی DOM نیاز ندارند، استفاده کنید.

مدیریت شنوندگان رویدادها را بهینه کنید. شنوندگان رویدادها را برای رویدادهای مکرر مانند اسکرول یا تغییر اندازه به‌صورت debounce یا throttle کنید تا تعداد فراخوانی‌های تابع کاهش یابد. اطمینان حاصل کنید که شنوندگان رویدادها به‌سرعت کامل شوند، به‌ویژه برای تعاملات کاربر.

مدیریت انیمیشن‌ها به‌طور کارآمد. از requestAnimationFrame() برای انیمیشن‌های نرم‌تر که با چرخه رندرینگ مرورگر همزمان هستند، استفاده کنید. تعداد عناصری که انیمیشن می‌شوند را به حداقل برسانید و در صورت امکان از انتقال‌ها یا انیمیشن‌های CSS برای بهبود عملکرد استفاده کنید.

7. استفاده از فرآیندهای ساخت و استقرار برای افزایش عملکرد جاوااسکریپت

هر چیزی که می‌تواند در زمان ساخت انجام شود، نباید در زمان اجرا انجام شود.

بهینه‌سازی‌ها را خودکار کنید. یک فرآیند ساخت با استفاده از ابزارهایی مانند Grunt، Gulp یا Webpack پیاده‌سازی کنید تا وظایفی مانند ادغام، فشرده‌سازی و فشرده‌سازی فایل‌های جاوااسکریپت را خودکار کنید. از نقشه‌های منبع برای حفظ قابلیت اشکال‌زدایی کد فشرده‌شده استفاده کنید.

تقسیم کد را پیاده‌سازی کنید. برنامه خود را به قطعات کوچک‌تر تقسیم کنید که می‌توانند به‌صورت درخواستی بارگذاری شوند، بار اولیه را کاهش داده و زمان راه‌اندازی را بهبود بخشند. از تکنیک‌هایی مانند بارگذاری تنبل برای منابع غیرضروری استفاده کنید.

برای تولید بهینه‌سازی کنید. کدهای مختص توسعه، مانند بیانیه‌های لاگ‌گذاری و اشکال‌زدایی را در ساخت‌های تولید حذف کنید. به‌جای شناسایی مرورگر، از شناسایی ویژگی استفاده کنید تا کد قابل نگهداری و کارآمدتری در محیط‌های مختلف ایجاد کنید.

8. استفاده از ابزارهای پروفایلینگ برای شناسایی و حل گلوگاه‌های عملکرد

داشتن نرم‌افزار مناسب برای شناسایی گلوگاه‌ها در بارگذاری و اجرای اسکریپت‌ها ضروری است.

از ابزارهای توسعه‌دهنده مرورگر استفاده کنید. از پروفایلرهای داخلی در مرورگرهایی مانند Chrome DevTools، Firefox Developer Tools و Safari Web Inspector برای تجزیه و تحلیل زمان اجرای جاوااسکریپت و شناسایی توابع کند استفاده کنید. از پنل‌های شبکه برای بهینه‌سازی بارگذاری منابع و شناسایی گلوگاه‌ها در تحویل دارایی‌ها استفاده کنید.

زمان‌بندی سفارشی را پیاده‌سازی کنید. از API عملکرد (window.performance) یا توابع زمان‌بندی سفارشی برای اندازه‌گیری عملیات خاص در کد خود استفاده کنید. این کار امکان ردیابی و بهینه‌سازی عملکرد دقیق‌تر را فراهم می‌کند.

عملکرد واقعی را نظارت کنید. نظارت بر کاربران واقعی (RUM) را برای جمع‌آوری داده‌های عملکرد از کاربران واقعی پیاده‌سازی کنید. این کار بینش‌هایی درباره عملکرد برنامه شما در دستگاه‌ها و شرایط شبکه مختلف ارائه می‌دهد و به اولویت‌بندی تلاش‌های بهینه‌سازی کمک می‌کند.

آخرین به‌روزرسانی::

نقد و بررسی

4.11 از 5
میانگین از 500+ امتیازات از Goodreads و Amazon.

کتاب جاوااسکریپت با عملکرد بالا نقدهای متفاوتی دریافت کرده است و به‌طور میانگین امتیاز 4.11 از 5 را کسب کرده است. بسیاری از خوانندگان از بینش‌های دقیق و نکات عملی آن برای بهینه‌سازی کد جاوااسکریپت تمجید می‌کنند. با این حال، برخی از محتوای قدیمی آن انتقاد می‌کنند، زیرا کتاب در سال 2010 منتشر شده است. جنبه‌های مثبت شامل توضیحات جامع از تکنیک‌های عملکرد، تعاملات DOM و عبارات منظم است. منتقدان اشاره می‌کنند که بسیاری از روش‌ها اکنون استاندارد شده‌اند و معیارهای مرورگر منسوخ شده‌اند. با وجود قدمت آن، برخی از خوانندگان هنوز ارزش‌هایی در اصول و دیدگاه تاریخی بهینه‌سازی عملکرد جاوااسکریپت می‌یابند.

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

نیکلاس سی. زاکاس یکی از چهره‌های برجسته در توسعه‌ی فرانت‌اند است که به خاطر تخصصش در جاوااسکریپت و فناوری‌های وب شناخته می‌شود. او نزدیک به پنج سال در یاهو! کار کرد و به کتابخانه‌ی YUI کمک کرد و رهبری توسعه‌ی فرانت‌اند برای صفحه‌ی اصلی یاهو! را بر عهده داشت. زاکاس چندین کتاب تأثیرگذار در زمینه‌ی جاوااسکریپت نوشته است، از جمله "جاوااسکریپت قابل نگهداری"، "جاوااسکریپت حرفه‌ای برای توسعه‌دهندگان وب" و "جاوااسکریپت با عملکرد بالا". کار او بر روی بهترین شیوه‌ها در توسعه‌ی وب تمرکز دارد و بر بهبود تدریجی، دسترسی‌پذیری، عملکرد، مقیاس‌پذیری و قابلیت نگهداری تأکید می‌کند. به عنوان مشاور، نویسنده و سخنران، زاکاس همچنان از طریق مشارکت‌هایش در دانش و استانداردهای صنعت، به شکل‌دهی به حوزه‌ی توسعه‌ی فرانت‌اند ادامه می‌دهد.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Unlock Unlimited Listening
🎧 Listen while you drive, walk, run errands, or do other activities
2.8x more books Listening Reading
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Jan 25,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →