یاد بگیرید چگونه با استفاده از راهنمای منابع مانند preload، prefetch و preconnect زمان بارگذاری وبسایت را بهینه کرده و تجربه کاربری را در سطح جهانی بهبود بخشید.
افزایش سرعت وبسایت با راهنمای منابع: Preload، Prefetch و Preconnect
در دنیای دیجیتال پرشتاب امروز، سرعت وبسایت از اهمیت بالایی برخوردار است. کاربران انتظار دارند وبسایتها به سرعت بارگذاری شده و فوراً پاسخ دهند. زمان بارگذاری طولانی میتواند منجر به تجربه کاربری ضعیف، نرخ پرش بالاتر و در نهایت، از دست رفتن کسبوکار شود. راهنمای منابع (Resource hints) ابزارهای قدرتمندی هستند که به توسعهدهندگان کمک میکنند با اطلاعرسانی به مرورگر در مورد اینکه کدام منابع مهم هستند و چگونه باید آنها را اولویتبندی کند، زمان بارگذاری وبسایت را بهینه کنند. این مقاله سه راهنمای کلیدی منابع را بررسی میکند: preload
، prefetch
و preconnect
و مثالهای عملی برای پیادهسازی آنها ارائه میدهد.
درک راهنمای منابع
راهنمای منابع دستورالعملهایی هستند که به مرورگر در مورد منابعی که یک صفحه وب در آینده به آنها نیاز خواهد داشت، اطلاع میدهند. این راهنماها به توسعهدهندگان اجازه میدهند تا به طور پیشدستانه مرورگر را در مورد منابع حیاتی آگاه کنند و به آن امکان میدهند تا زودتر از حالت عادی آنها را واکشی یا به آنها متصل شود. این کار میتواند به طور قابل توجهی زمان بارگذاری را کاهش داده و عملکرد درکشده را بهبود بخشد.
سه راهنمای اصلی منابع عبارتند از:
- Preload: منابع حیاتی مورد نیاز برای بارگذاری اولیه صفحه را واکشی میکند.
- Prefetch: منابعی را که احتمالاً برای ناوبریها یا تعاملات آینده مورد نیاز خواهند بود، واکشی میکند.
- Preconnect: اتصالات اولیه به سرورهای شخص ثالث مهم را برقرار میکند.
Preload: اولویتبندی منابع حیاتی
Preload چیست؟
Preload
یک واکشی اعلانی است که به شما امکان میدهد به مرورگر بگویید منبعی را که برای ناوبری فعلی لازم است، در اسرع وقت واکشی کند. این ویژگی به خصوص برای منابعی مفید است که توسط مرورگر دیر شناسایی میشوند، مانند تصاویر، فونتها، اسکریپتها یا شیوهنامههایی که از طریق CSS یا JavaScript بارگذاری میشوند. با پیشبارگذاری این منابع، میتوانید از تبدیل شدن آنها به منابع مسدودکننده رندر (render-blocking) جلوگیری کرده و سرعت بارگذاری درکشده وبسایت خود را بهبود بخشید.
چه زمانی از Preload استفاده کنیم
از preload
برای موارد زیر استفاده کنید:
- فونتها: بارگذاری زودهنگام فونتهای سفارشی میتواند از پدیده فلش متن بدون استایل (FOUT) یا فلش متن نامرئی (FOIT) جلوگیری کند.
- تصاویر: اولویتبندی تصاویر بالای صفحه (above-the-fold) تضمین میکند که آنها به سرعت بارگذاری شوند و تجربه اولیه کاربر را بهبود بخشند.
- اسکریپتها و شیوهنامهها: بارگذاری زودهنگام فایلهای CSS یا JavaScript حیاتی از مسدود شدن رندر جلوگیری میکند.
- ماژولها و Web Workerها: پیشبارگذاری ماژولها یا وب ورکرها میتواند پاسخدهی برنامه شما را بهبود بخشد.
چگونه Preload را پیادهسازی کنیم
شما میتوانید preload
را با استفاده از تگ <link>
در بخش <head>
سند HTML خود پیادهسازی کنید:
<link rel="preload" href="/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
<link rel="preload" href="/styles/critical.css" as="style">
<link rel="preload" href="/scripts/app.js" as="script">
<link rel="preload" href="/images/hero.jpg" as="image">
توضیح:
rel="preload"
: مشخص میکند که مرورگر باید منبع را پیشبارگذاری کند.href="/path/to/resource"
: آدرس URL منبعی که باید پیشبارگذاری شود.as="type"
: نوع منبعی که پیشبارگذاری میشود را مشخص میکند (مثلاً font، style، script، image). ویژگی `as` اجباری و برای اولویتبندی و مدیریت صحیح منبع توسط مرورگر حیاتی است. استفاده از مقدار صحیح برای `as` تضمین میکند که مرورگر سیاست امنیتی محتوای (CSP) صحیح را اعمال کرده و هدرAccept
درستی را ارسال کند.type="mime/type"
: (اختیاری اما توصیه شده) نوع MIME منبع را مشخص میکند. این به مرورگر کمک میکند تا فرمت صحیح منبع را انتخاب کند، به خصوص برای فونتها.crossorigin="anonymous"
: (برای فونتهایی که از مبدأ دیگری بارگذاری میشوند، الزامی است) حالت CORS را برای درخواست مشخص میکند. اگر فونتها را از یک CDN بارگذاری میکنید، احتمالاً به این ویژگی نیاز خواهید داشت.
مثال: پیشبارگذاری یک فونت
تصور کنید یک فونت سفارشی به نام 'OpenSans' در وبسایت خود دارید. بدون preload، مرورگر این فونت را تنها پس از تجزیه فایل CSS کشف میکند. این میتواند باعث تأخیر در رندر متن با فونت صحیح شود. با پیشبارگذاری فونت، میتوانید این تأخیر را از بین ببرید.
<link rel="preload" href="/fonts/OpenSans-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">
مثال: پیشبارگذاری یک فایل CSS حیاتی
اگر وبسایت شما یک فایل CSS حیاتی دارد که برای رندر نمای اولیه ضروری است، پیشبارگذاری آن میتواند به طور قابل توجهی عملکرد درکشده را بهبود بخشد.
<link rel="preload" href="/styles/critical.css" as="style">
بهترین شیوهها برای Preload
- اولویتبندی منابع حیاتی: فقط منابعی را پیشبارگذاری کنید که برای بارگذاری اولیه صفحه ضروری هستند. استفاده بیش از حد از preload میتواند تأثیر منفی بر عملکرد داشته باشد.
- از ویژگی
as
صحیح استفاده کنید: همیشه ویژگیas
صحیح را مشخص کنید تا اطمینان حاصل شود که مرورگر منبع را به درستی مدیریت میکند. - ویژگی
type
را اضافه کنید: ویژگیtype
را برای کمک به مرورگر در انتخاب فرمت صحیح منبع، اضافه کنید. - برای فونتهای با مبدأ متفاوت از
crossorigin
استفاده کنید: هنگام بارگذاری فونتها از یک مبدأ دیگر، حتماً ویژگیcrossorigin
را اضافه کنید. - عملکرد را تست کنید: همیشه تأثیر عملکرد preload را تست کنید تا مطمئن شوید که واقعاً زمان بارگذاری را بهبود میبخشد. از ابزارهایی مانند Google PageSpeed Insights یا WebPageTest برای اندازهگیری تأثیر آن استفاده کنید.
Prefetch: پیشبینی نیازهای آینده
Prefetch چیست؟
Prefetch
یک راهنمای منبع است که به مرورگر میگوید منابعی را که احتمالاً برای ناوبریها یا تعاملات آینده مورد نیاز خواهند بود، واکشی کند. برخلاف preload
که بر منابع مورد نیاز برای صفحه فعلی تمرکز دارد، prefetch
حرکت بعدی کاربر را پیشبینی میکند. این ویژگی به خصوص برای بهبود سرعت بارگذاری صفحات یا کامپوننتهای بعدی مفید است.
چه زمانی از Prefetch استفاده کنیم
از prefetch
برای موارد زیر استفاده کنید:
- منابع صفحه بعد: اگر میدانید که کاربر به احتمال زیاد به صفحه خاصی خواهد رفت، منابع آن را پیشواکشی کنید.
- منابع برای تعاملات کاربر: اگر یک تعامل کاربر باعث بارگذاری منابع خاصی میشود (مثلاً یک پنجره مودال، یک فرم)، آن منابع را پیشواکشی کنید.
- تصاویر و داراییها در صفحات دیگر: تصاویر یا داراییهای مورد استفاده در صفحات دیگری که کاربر احتمالاً از آنها بازدید خواهد کرد را پیشواکشی کنید.
چگونه Prefetch را پیادهسازی کنیم
شما میتوانید prefetch
را با استفاده از تگ <link>
در بخش <head>
سند HTML خود پیادهسازی کنید:
<link rel="prefetch" href="/page2.html">
<link rel="prefetch" href="/images/product.jpg">
<link rel="prefetch" href="/scripts/modal.js">
توضیح:
rel="prefetch"
: مشخص میکند که مرورگر باید منبع را پیشواکشی کند.href="/path/to/resource"
: آدرس URL منبعی که باید پیشواکشی شود.
مثال: پیشواکشی منابع صفحه بعد
اگر وبسایت شما یک جریان کاربری مشخص دارد، مانند یک فرم چند مرحلهای، میتوانید منابع مرحله بعد را زمانی که کاربر در مرحله فعلی است، پیشواکشی کنید.
<link rel="prefetch" href="/form/step2.html">
مثال: پیشواکشی منابع برای یک پنجره مودال
اگر وبسایت شما از یک پنجره مودال استفاده میکند که هنگام باز شدن منابع اضافی را بارگذاری میکند، میتوانید آن منابع را پیشواکشی کنید تا تجربه کاربری روانی را تضمین کنید.
<link rel="prefetch" href="/scripts/modal.js">
<link rel="prefetch" href="/styles/modal.css">
بهترین شیوهها برای Prefetch
- با احتیاط استفاده کنید: Prefetch باید با احتیاط استفاده شود زیرا میتواند پهنای باند و منابع را مصرف کند حتی اگر کاربر به منابع پیشواکشی شده نیاز نداشته باشد.
- ناوبریهای محتمل را اولویتبندی کنید: منابع را برای صفحات یا تعاملاتی که به احتمال زیاد رخ میدهند، پیشواکشی کنید.
- شرایط شبکه را در نظر بگیرید: Prefetch برای کاربرانی با اتصالات اینترنت پایدار و سریع مناسبتر است. از پیشواکشی منابع بزرگ برای کاربران با اتصالات کند یا محدود (metered) خودداری کنید. میتوانید از Network Information API برای تشخیص نوع اتصال کاربر و تنظیم پیشواکشی بر اساس آن استفاده کنید.
- عملکرد را نظارت کنید: تأثیر prefetch بر عملکرد وبسایت خود را نظارت کنید تا مطمئن شوید که سود خالصی را ارائه میدهد.
- از پیشواکشی پویا استفاده کنید: پیشواکشی را به صورت پویا بر اساس رفتار کاربر و دادههای تحلیلی پیادهسازی کنید. به عنوان مثال، منابع را برای صفحاتی پیشواکشی کنید که اغلب توسط کاربرانی که در حال حاضر در صفحه فعلی هستند، بازدید میشوند.
Preconnect: برقراری اتصالات اولیه
Preconnect چیست؟
Preconnect
یک راهنمای منبع است که به شما امکان میدهد اتصالات اولیه به سرورهای شخص ثالث مهم را برقرار کنید. برقراری یک اتصال شامل چندین مرحله است، از جمله جستجوی DNS، دستدهی TCP و مذاکره TLS. این مراحل میتوانند تأخیر قابل توجهی به بارگذاری منابع از آن سرورها اضافه کنند. Preconnect
به شما امکان میدهد این مراحل را در پسزمینه آغاز کنید، به طوری که وقتی مرورگر نیاز به واکشی منبعی از سرور دارد، اتصال از قبل برقرار شده باشد.
چه زمانی از Preconnect استفاده کنیم
از preconnect
برای موارد زیر استفاده کنید:
- سرورهای شخص ثالث: سرورهایی که میزبان فونتها، CDNها، APIها یا هر منبع دیگری هستند که وبسایت شما به آنها متکی است.
- سرورهای پرکاربرد: سرورهایی که به طور مکرر توسط وبسایت شما مورد دسترسی قرار میگیرند.
چگونه Preconnect را پیادهسازی کنیم
شما میتوانید preconnect
را با استفاده از تگ <link>
در بخش <head>
سند HTML خود پیادهسازی کنید:
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.example.com">
توضیح:
rel="preconnect"
: مشخص میکند که مرورگر باید به سرور پیشاتصال برقرار کند.href="https://example.com"
: آدرس URL سروری که باید به آن پیشاتصال برقرار شود.crossorigin
: (اختیاری، اما برای منابعی که با CORS بارگذاری میشوند الزامی است) مشخص میکند که اتصال به CORS نیاز دارد.
مثال: پیشاتصال به Google Fonts
اگر وبسایت شما از Google Fonts استفاده میکند، پیشاتصال به https://fonts.gstatic.com
میتواند به طور قابل توجهی تأخیر در بارگذاری فونت را کاهش دهد.
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
ویژگی `crossorigin` در اینجا حیاتی است زیرا Google Fonts از CORS برای ارائه فونتها استفاده میکند.
مثال: پیشاتصال به یک CDN
اگر وبسایت شما از یک CDN برای ارائه داراییهای استاتیک استفاده میکند، پیشاتصال به نام میزبان CDN میتواند تأخیر در بارگذاری آن داراییها را کاهش دهد.
<link rel="preconnect" href="https://cdn.example.com">
بهترین شیوهها برای Preconnect
- با تدبیر استفاده کنید: پیشاتصال به تعداد زیادی سرور میتواند در واقع عملکرد را کاهش دهد، زیرا مرورگر منابع محدودی برای برقراری اتصالات دارد.
- سرورهای مهم را اولویتبندی کنید: به سرورهایی پیشاتصال برقرار کنید که برای عملکرد وبسایت شما حیاتیترین هستند.
- DNS-Prefetch را در نظر بگیرید: برای سرورهایی که نیازی به پیشاتصال کامل به آنها ندارید، اما همچنان میخواهید DNS را زودتر حل کنید، از
<link rel="dns-prefetch" href="https://example.com">
استفاده کنید. DNS-prefetch فقط جستجوی DNS را انجام میدهد که نسبت به یک پیشاتصال کامل، منابع کمتری مصرف میکند. - عملکرد را تست کنید: همیشه تأثیر عملکرد preconnect را تست کنید تا مطمئن شوید که سود خالصی را ارائه میدهد.
- با دیگر راهنمای منابع ترکیب کنید: از preconnect در ترکیب با preload و prefetch برای دستیابی به عملکرد بهینه استفاده کنید. به عنوان مثال، به سرور میزبان فونتهای خود پیشاتصال برقرار کرده و سپس فایلهای فونت را پیشبارگذاری کنید.
ترکیب راهنمای منابع برای عملکرد بهینه
قدرت واقعی راهنمای منابع در ترکیب استراتژیک آنها نهفته است. در اینجا یک مثال عملی آورده شده است:
وبسایتی را تصور کنید که از یک فونت سفارشی میزبانی شده بر روی یک CDN استفاده میکند و یک فایل JavaScript حیاتی را بارگذاری میکند.
- پیشاتصال به CDN: یک اتصال اولیه به CDN میزبان فونت و فایل JavaScript برقرار کنید.
<link rel="preconnect" href="https://cdn.example.com" crossorigin>
- پیشبارگذاری فونت: بارگذاری فونت را برای جلوگیری از FOUT اولویتبندی کنید.
<link rel="preload" href="https://cdn.example.com/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
- پیشبارگذاری فایل JavaScript: بارگذاری فایل JavaScript را اولویتبندی کنید تا اطمینان حاصل شود که در زمان نیاز در دسترس است.
<link rel="preload" href="https://cdn.example.com/scripts/app.js" as="script">
ابزارهایی برای تحلیل راهنمای منابع
چندین ابزار میتوانند به شما در تحلیل اثربخشی راهنمای منابع کمک کنند:
- Google PageSpeed Insights: توصیههایی برای بهینهسازی عملکرد وبسایت شما، از جمله استفاده از راهنمای منابع، ارائه میدهد.
- WebPageTest: به شما امکان میدهد عملکرد وبسایت خود را از مکانها و شرایط شبکه مختلف تست کنید.
- Chrome DevTools: پنل Network در Chrome DevTools زمانبندی بارگذاری منابع را نشان میدهد و میتواند به شما در شناسایی فرصتهای بهینهسازی کمک کند.
- Lighthouse: یک ابزار خودکار برای بهبود کیفیت صفحات وب است. این ابزار دارای ممیزیهایی برای عملکرد، دسترسیپذیری، برنامههای وب پیشرونده، سئو و موارد دیگر است.
اشتباهات رایج و نحوه اجتناب از آنها
- استفاده بیش از حد از راهنمای منابع: استفاده از تعداد زیادی راهنمای منابع میتواند تأثیر منفی بر عملکرد داشته باشد. بر روی حیاتیترین منابع تمرکز کنید.
- ویژگی
as
نادرست: استفاده از ویژگیas
اشتباه برای preload میتواند مانع از بارگذاری صحیح منبع شود. - نادیده گرفتن CORS: عدم افزودن ویژگی
crossorigin
هنگام بارگذاری منابع از یک مبدأ دیگر میتواند باعث خطاهای بارگذاری شود. - عدم تست عملکرد: همیشه تأثیر عملکرد راهنمای منابع را تست کنید تا مطمئن شوید که سود خالصی را ارائه میدهند.
- مسیرهای نادرست: مسیرهای فایل و URLهای مشخص شده برای راهنمای منابع را دوباره بررسی و اطمینان حاصل کنید که صحیح هستند، در غیر این صورت منجر به خطا خواهد شد.
آینده راهنمای منابع
راهنمای منابع به طور مداوم در حال تحول هستند و ویژگیها و بهبودهای جدیدی به مشخصات مرورگرها اضافه میشود. بهروز ماندن با آخرین تحولات در راهنمای منابع میتواند به شما در بهینهسازی بیشتر عملکرد وبسایتتان کمک کند. به عنوان مثال، modulepreload
یک راهنمای منبع جدیدتر است که به طور خاص برای پیشبارگذاری ماژولهای JavaScript طراحی شده است. همچنین، ویژگی `priority` برای راهنمای منابع به شما امکان میدهد اولویت یک منبع را نسبت به سایر منابع مشخص کنید. پشتیبانی مرورگرها از این ویژگیها هنوز در حال تکامل است، بنابراین قبل از پیادهسازی، سازگاری را بررسی کنید.
نتیجهگیری
راهنمای منابع ابزارهای قدرتمندی برای بهینهسازی زمان بارگذاری وبسایت و بهبود تجربه کاربری هستند. با استفاده استراتژیک از preload
، prefetch
و preconnect
، میتوانید به طور پیشدستانه مرورگر را در مورد منابع حیاتی آگاه کنید، تأخیر را کاهش دهید و عملکرد درکشده وبسایت خود را افزایش دهید. به یاد داشته باشید که منابع حیاتی را اولویتبندی کنید، از راهنمای منابع با تدبیر استفاده کنید و همیشه تأثیر عملکرد تغییرات خود را تست کنید. با پیروی از بهترین شیوههای ذکر شده در این مقاله، میتوانید به طور قابل توجهی عملکرد وبسایت خود را بهبود بخشیده و تجربه بهتری را برای کاربران خود در سراسر جهان فراهم کنید.