هیچ محصولی در سبد خرید وجود ندارد.

کندی بارگذاری سایت اختصاصی یکی از رایجترین چالشهای کسبوکارهای دیجیتال است. با استفاده از پروفایلگیری در ابزارهای توسعه کروم میتوان گلوگاهها را یافت و تجربه کاربری را بهبود بخشید.
چند روز پیش با توسعهدهندهای صحبت میکردم که از کندی سایت اختصاصیاش گلایه داشت. همه چیز از نظر کدنویسی و سرور خوب به نظر میرسید، اما کاربران مدام از تأخیر در بارگذاری شکایت داشتند. جالب اینجاست که خودش هم نمیدانست دقیقاً مشکل از کجاست. این داستان برای بسیاری از صاحبان سایتهای اختصاصی آشناست: ظاهراً همه چیز مرتب است، اما یک جای کار میلنگد.
جدول محتوا [نمایش]
زمانی که یک سایت اختصاصی طراحی میکنید، ظاهر و امکانات آن معمولاً اولویت اول هستند. اما چیزی که کمتر به آن توجه میشود، عملکرد پنهان در پشت صحنه است. ابزارهای توسعه کروم، بهویژه تب Performance یا همان پروفایلگیری عملکرد، دقیقاً همان جایی است که میتوانید رد مشکلات نامرئی را بگیرید. این ابزارها نشان میدهند که مرورگر چقدر زمان صرف هر بخش از صفحه میکند و کدام فرایندها باعث افت سرعت شدهاند.
بسیاری از توسعهدهندگان تصور میکنند کافی است یک بار پروفایل بگیرند تا همه مشکلات نمایان شود. اما واقعیت پیچیدهتر است. یکی از اشتباهات رایج، گرفتن پروفایل در محیط توسعه بهجای محیط واقعی کاربران است. ابزارهای کروم وقتی روی دستگاه شخصی اجرا میشوند، معمولاً منابع بیشتری در اختیار دارند و نتایج غیرواقعی نشان میدهند. همچنین خیلیها فراموش میکنند که قبل از ضبط، کش مرورگر را پاک کنند یا افزونههای غیرضروری را غیرفعال کنند. این کار باعث میشود دادههای ثبتشده گمراهکننده باشند. نکته دیگر این است که فقط به زمان بارگذاری کلی نگاه میکنند، در حالی که باید به رویدادهایی مثل Layout و Paint و Scripting توجه داشت. این سه عامل اصلیترین منابع کندی در سایتهای اختصاصی هستند.
بعد از اینکه یک پروفایل درست گرفتید، نوبت به خواندن خروجی میرسد. نمودار آبشاری یا Waterfall Chart نشان میدهد که هر درخواست شبکه چقدر طول کشیده است. اما چیزی که معمولاً نادیده گرفته میشود، توالی رویدادهاست. گاهی یک اسکریپت به ظاهر بیآزار، باعث مسدود شدن رندرینگ میشود. Flame Chart نیز نحوه توزیع زمان بین توابع مختلف را مشخص میکند. اگر ببینید یک تابع ساده مثل پردازش یک لوگو چند میلیثانیه زمان میبرد، آن وقت میفهمید که مشکل از کدهای جاوااسکریپت شماست. در سایتهای اختصاصی که اغلب کدهای سفارشی زیادی دارند، این تحلیلها حیاتیتر است. بدون پروفایلگیری دقیق، ممکن است ساعتها به دنبال مشکل در سمت سرور بگردید، در حالی که ریشه آن در مرورگر است.
یکی از چالشهای پنهانی که پروفایلگیری کروم به خوبی نشان میدهد، پدیده Layout Thrashing است. این اتفاق زمانی میافتد که شما در یک حلقه، مرتباً از مرورگر میخواهید ابعاد یا موقعیت عناصر را بخواند و همزمان آنها را تغییر دهد. مرورگر مجبور میشود بارها و بارها محاسبه چیدمان را انجام دهد و این یعنی افت شدید فریم. جالب اینجاست که در یک سایت اختصاصی با طراحی پیچیده، این مشکل ممکن است تنها در یک ویجت خاص یا یک انیمیشن ساده رخ دهد. بسیاری از توسعهدهندگان به آن توجه نمیکنند چون در نگاه اول کد تمیز به نظر میرسد. اما وقتی پروفایل را باز کنید، میبینید که مرورگر بیشتر وقت خود را صرف محاسبه مجدد موقعیتها کرده است. برای رفع این مسئله، بهتر است عملیات خواندن و نوشتن استایل را جدا کنید و از batch updates استفاده کنید. در طراحی سایت اختصاصی این نکات ظریف میتوانند تفاوت بزرگی در تجربه کاربری ایجاد کنند.
یک چالش دیگر که اغلب نادیده گرفته میشود، مدیریت حافظه در سمت مرورگر است. سایتهای اختصاصی معمولاً حجم بالایی از دیتا و تصاویر را در حافظه نگه میدارند. اگر متغیرهای سراسری به درستی آزاد نشوند یا رویدادهای DOM پاک نشوند، مرورگر مجبور میشود garbage collection سنگینی انجام دهد. پروفایلگیری در ابزارهای کروم با بخش Memory میتواند این نشتهای حافظه را نشان دهد. معمولاً کاربران متوجه کندی تدریجی سایت میشوند، مثلاً بعد از چند دقیقه کار با یک صفحه، اسکرول کردن سخت میشود. این مشکل مستقیماً به چرخه عمر نادرست المانها و closureهای باقیمانده برمیگردد. یک بار پروفایل گرفتن از حالت عادی و سپس بعد از تعاملات کاربر، تفاوت فاحش را نشان میدهد.
نکته فنی مهم دیگر این است که پروفایلگیری روی لپتاپ قدرتمند خودتان نتایج فریبندهای دارد. ابزارهای کروم گزینهای به نام CPU Throttling دارند که میتواند سرعت پردازنده را شبیهسازی کند. بسیاری از بازدیدکنندگان سایتهای اختصاصی از گوشیهای میانرده یا اینترنت با سرعت پایین استفاده میکنند. اگر بدون فعال کردن throttling پروفایل بگیرید، مشکلاتی مثل انیمیشنهای سنگین یا پردازشهای طولانی جاوااسکریپت را نخواهید دید. یک روش مؤثر این است که پروفایل را با کاهش ۴ یا ۶ برابری سرعت CPU اجرا کنید. آن وقت متوجه میشوید که کدام بخشهای سایت شما برای کاربران واقعی غیرقابل تحمل است. این تکنیک مخصوصاً برای سایتهایی که المانهای واکنشگرا و انیمیشنهای پیچیده دارند، ضروری است.