راهنمای جامع سئو فنی: تفاوت Preload و Prefetch و الگوی درست استفاده برای بهینهسازی سرعت
اگر هدف شما این است که صفحه هم در نگاه اول سریع بالا بیاید و هم ناوبری بعدی کاربر برقآسا باشد، باید به شکلی آگاهانه بین دو تاکتیک کلیدی…
راهنمای جامع سئو فنی: تفاوت Preload و Prefetch و الگوی درست استفاده برای بهینهسازی سرعت

اگر هدف شما این است که صفحه هم در نگاه اول سریع بالا بیاید و هم ناوبری بعدی کاربر برقآسا باشد، باید به شکلی آگاهانه بین دو تاکتیک کلیدی انتخاب کنید: Preload و Prefetch. از بیرون شبیهاند، اما ماموریت متفاوتی دارند؛ یکی برای همین حالا و رندر اولیه صفحه فعلی، دیگری برای حرکت بعدی کاربر.
این مقاله بهصورت صفر تا صد، کاربرد عملی هر دو رویکرد، تأثیرشان بر Core Web Vitals و سئو، خطاهای رایج، نمونه کد، سناریوهای واقعی و چکلیست اجرایی را پوشش میدهد تا هنگام پیادهسازی، تصمیمهای دقیق و دادهمحور بگیرید.
Preload چیست و چرا برای سرعت رندر اولیه حیاتی است؟
Preload راهی است برای اینکه به مرورگر صریح بگویید کدام منبع را همین الان لازم دارید. وقتی منبعی برای رندر اولیه صفحه حیاتی است، تعلل در دانلود آن، مستقیماً شاخص LCP را بدتر میکند و کاربر تأخیر را حس مینماید. با Preload وارد صف دانلود با اولویت بالا میشوید و زمان دسترسی به منبع را کوتاه میکنید. نمونههای رایج برای Preload در صفحه فعلی:
- CSS اصلی که استایل کل Above the Fold را تعیین میکند؛
- فونتهایی که در متن ابتدایی صفحه دیده میشوند؛
- تصویر هیرو که معمولاً نامزد LCP است؛
- اسکریپتهایی که برای هیدریشن یا رندر اولیه لازمند.
نمونه کد ساده برای Preload منابع حیاتی:
<link rel="preload" href="/styles.css" as="style">
<link rel="preload" href="/fonts/main.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/hero.webp" as="image">
چرا as اهمیت دارد؟ مرورگر با توجه به نوع منبع قوانین کش و اولویتبندی را درست اعمال میکند. اگر as غلط باشد، ممکن است اولویت مناسب یا سیاست کش درست اجرا نشود. برای فونتها حتماً type و crossorigin را ست کن تا کش و دوبارهاستفاده شدن در دامنههای سازگار بهدرستی انجام شود.
Prefetch چیست و چگونه ناوبری بعدی را تسریع میکند؟
Prefetch برای وقتی است که میخواهید حرکت بعدی کاربر را سریع نمایید. ایده این است که مرورگر در زمان بیکاری شبکه یا CPU با اولویت پایین فایلهای احتمالاً لازم را از قبل دریافت کند. وقتی کاربر روی لینک صفحه بعدی کلیک مینماید، فایلها از کش در دسترساند و صفحه بسیار سریعتر باز میشود.
سناریوهای کاربردی Prefetch:
- جاوااسکریپت صفحه بعدی
- محتوای HTML یا JSON مربوط به مسیر بعدی
- تصاویر مرحله دوم فلو کاربر مثل تصاویر گالری در اسکرول بعدی
- مسیرهای پرتکرار در اپلیکیشنهای SPA یا PWA
نمونه کد:
<link rel="prefetch" href="/next-page.js">
<link rel="prefetch" href="/category/phones.html">
نکته کلیدی که باید جدی بگیرید این است، Prefetch فقط وقتی انجام میشود که مرورگر منابع آزاد داشته باشد. بنابراین هرگز روی آن بهعنوان تضمین زمانبندی لحظهای حساب باز نکن؛ Prefetch مکمل است نه جایگزین منابع حیاتی Preload.
انتخاب درست بین Preload و Prefetch در بهینهسازی بارگذاری
معیار تصمیم ساده ولی دقیق است. اگر حذف یا تأخیر در دریافت یک منبع، رندر همین صفحه را عقب میاندازد و بهویژه LCP را بالا میبرد، باید Preload کنید. اگر منبع مربوط به تعامل بعدی کاربر است و فعلاً ضروری نیست، Prefetch گزینه بهتر است تا در زمانهای بیکار آماده شود.
برای تصمیمگیری دقیقتر، به داده تکیه کنید. با استفاده از ابزارهای آنالیتیکس، مسیرهای پرترافیک و لینکهایی که نرخ کلیک بالایی دارند را شناسایی کرده و تنها همان مقاصد را Prefetch کنید. در مورد Preload نیز، از گزارشهای Performance در DevTools و Lighthouse بهره بگیرید تا منابع واقعاً حیاتی را مشخص کرده و از هرگونه زیادهروی در بارگذاری پیشگیرانه جلوگیری شود.
کاربرد دقیق هر روش با مثالهای اجرایی و جزئیات مهم
وقتی باید همین صفحه سریع بالا بیاید؛ Preload با الگوی صحیح
در مرحله رندر اولیه، منابع حیاتی را با Preload بارگذاری کنید. برای تصویر هیرو نیز از ویژگی fetchpriority استفاده نمایید تا اهمیت آن بهعنوان عنصر اصلی LCP بهطور صریح به مرورگر اعلام شود و زنجیره دانلود منابع کوتاهتر و بهینهتر گردد.
نمونه کد عملی:
<link rel="preload" href="/styles.css" as="style">
<link rel="preload" href="/fonts/main.woff2" as="font" type="font/woff2" crossorigin>
<img src="/hero.webp" fetchpriority="high" alt="">
اگر اسکریپتهای شما بهصورت ماژولی نوشته شدهاند، از ویژگی modulepreload استفاده کنید تا مرورگر بتواند وابستگیهای آن ماژول را نیز همزمان و پیش از نیاز واقعی بارگیری کند.
<link rel="modulepreload" href="/entry.mjs">
برای تصاویر پاسخگو بهتر است همراه Preload، ویژگیهای تصاویر را هم دقیق ست کنید تا مرورگر انتخاب سایز درست را سریع انجام دهد:
<link rel="preload" as="image" href="/hero.webp" imagesrcset="/hero@2x.webp 2x, /hero.webp 1x" imagesizes="100vw">
وقتی میخواهی حرکت بعدی کاربر برقآسا باشد؛ Prefetch هوشمند
در اپلیکیشنهای تکصفحهای (SPA) یا وباپهای پیشرونده (PWA)، میتوانید فرآیند Prefetch را هنگام قرار گرفتن نشانگر روی لینک یا زمانی که لینک وارد محدوده دید کاربر (ویوپورت) میشود، فعال کنید تا مرورگر هوشمندانهتر و هدفمندتر منابع مورد نیاز را بارگیری نماید.
نمونه الگوی ساده با جاوا اسکریپت:
<a href="/products" data-prefetch>محصولات</a>
<script>
document.querySelectorAll('a[data-prefetch]').forEach(a => {
a.addEventListener('mouseenter', () => {
const link = document.createElement('link');
link.rel = 'prefetch';
link.href = a.getAttribute('href');
document.head.appendChild(link);
});
});
</script>
این الگو فقط وقتی کاربر قصد تعامل نشان میدهد Prefetch را فعال میکند و مصرف پهنای باند را هدفمند نگه میدارد.
تأثیر Preload و Prefetch بر Core Web Vitals و سئو
این دو دستور بهخودیخود سیگنال رتبهبندی مستقیم نیستند، اما با بهبود تجربه کاربری بهشکل غیرمستقیم روی سئو اثر میگذارند. Preload اگر درست استفاده گردد، LCP را کاهش میدهد؛ چون منبع حیاتی زودتر به دست مرورگر میرسد.
Prefetch مستقیماً بر شاخص LCP صفحه فعلی تأثیری ندارد، اما با کاهش زمان ناوبری بین صفحات، حس سرعت را برای کاربر افزایش میدهد و احتمال ادامه تعامل را بیشتر میکند. این کاهش تأخیر و کاهش نرخ خروج کاربران، سیگنالهای رفتاری مثبتی ایجاد مینماید که از دید سئو بسیار ارزشمند است.
بهینهسازیهای مرتبط که مکمل این دو هستند:
- استفاده هدفمند از preconnect برای گرم کردن اتصال به دامنه CDN
- dns-prefetch برای کاهش زمان حل DNS دامنههای ثانویه
- تنظیم درست cache-control تا منابع preloaded و prefetched واقعاً از کش بهره ببرند و دوباره دانلود نشوند
- توجه به اولویتبندی در HTTP/2 و HTTP/3 تا ازدحام در کانالهای اشتراکی ایجاد نکنی
نمونه تکمیلکننده:
<link rel="preconnect" href="https://cdn.example.com" crossorigin>
<link rel="dns-prefetch" href="//cdn.example.com">
اشتباهات رایج در استفاده از Preload و Prefetch و راهحلهای عملی برای اصلاح آنها
در بهینهسازی سرعت وب، بسیاری از توسعهدهندگان هنگام استفاده از Preload و Prefetch دچار خطاهایی میشوند که نهتنها کمکی به بهبود عملکرد نمیکند، بلکه گاهی نتیجه معکوس دارد. در ادامه، شش اشتباه پرتکرار و روش درست اصلاح هر یک را بررسی میکنیم.
۱. زیادهروی در Preload و افزایش غیرمنطقی صف دانلود
یکی از متداولترین خطاها، Preload کردن بیش از حد منابع است. وقتی هر فایل را حیاتی فرض کنید، صف دانلود مرورگر شلوغ میشود و فایلهای واقعاً مهم با تأخیر بارگذاری میگردند. نتیجه نهایی، افزایش زمان LCP و تجربه کندتر برای کاربر است. راهحل ساده اما مهم است: فقط منابعی را Preload کنید که نبودشان مستقیماً مانع رندر صفحه میشود. یک معیار منطقی این است که اگر دریافت فایل حتی با یک ثانیه تأخیر صورت گیرد، آیا کاربر این تأخیر را حس میکند یا نه؟ اگر پاسخ منفی است، آن منبع حیاتی نیست.
۲. Prefetch بیهدف و هدررفت پهنای باند
دومین اشتباه، استفاده بیبرنامه از Prefetch است. اگر لینکی یا صفحهای احتمال کمی برای کلیک دارد، Prefetch آن فقط مصرف اضافی پهنای باند و منابع کاربر است. برای جلوگیری از این مشکل، تصمیمگیری را به دادهها بسپارید. از گزارشهای آنالیتیکس استفاده کنید تا مسیرهای پرترافیک و لینکهای با نرخ کلیک بالا را شناسایی کنید. Prefetch را فقط برای همین مسیرهای پرکلیک فعال نمایید. در دستگاههای موبایل و شبکههای ضعیف، این دقت اهمیت دوچندان دارد.
۳. تنظیم نادرست ویژگی as و اولویت اشتباه منابع
یکی از اشتباهات فنی رایج، نادیده گرفتن ویژگی as است. این ویژگی مشخص میکند مرورگر منبع را چگونه اولویتبندی و در کش ذخیره کند. اگر مقدار as به درستی تعیین نشود، فایل ممکن است دوباره دانلود شود یا اولویت نامناسبی بگیرد. برای جلوگیری از این مشکل:
- برای فونتها از
as="font"و نوع فایل صحیح (type="font/woff2") استفاده کنید. - برای تصاویر از
as="image"کمک بگیرید. - برای استایلها نیز همیشه
as="style"را مشخص کنید.
این تنظیم دقیق باعث میشود مرورگر رفتار صحیحی در زمانبندی، کش و اولویتبندی منابع داشته باشد.
۴. تداخل با فریمورکها و دوبارهکاری در Prefetch
بسیاری از فریمورکها مانند Next.js ،React Router یا Vue Router دارای سیستم Prefetch داخلی هستند. اضافه کردن دستی تگهای Prefetch در این شرایط میتواند باعث دانلود دوباره فایلها و افزایش ترافیک بیهوده شود. پیشنهاد حرفهای این است که فقط یکی از این دو را انتخاب کنید: یا به سیستم هوشمند فریمورک اعتماد کنید یا Prefetch را به صورت دستی و کنترلشده پیادهسازی کنید. ترکیب هر دو روش معمولاً نتیجهای جز مصرف بیدلیل منابع ندارد.
۵. فراموش کردن crossorigin در Preload فونتها
یکی از خطاهای ظریف اما مهم، Preload فونتها بدون تعیین ویژگی crossorigin است. نتیجه این اشتباه معمولاً کش نشدن فونتها در برخی مرورگرها یا بروز خطاهای CORS است. برای جلوگیری از این مشکل، همیشه هنگام Preload فونتها از نسخهای مشابه زیر استفاده کنید:
<link rel="preload" href="/fonts/main.woff2" as="font" type="font/woff2" crossorigin>
اینکار اطمینان میدهد فونتها در کش مرورگر بهدرستی ذخیره شوند و در صفحات بعدی بدون نیاز به دانلود مجدد استفاده گردند.
۶. Preload اسکریپتهای سنگین و غیرضروری
آخرین اشتباه، بارگذاری پیشدستانه اسکریپتهایی است که برای تعاملات بعد از رندر اولیه مورد استفاده قرار میگیرند. اینکار باعث طولانی شدن مسیر رندر و در نتیجه افت سرعت صفحه میشود. برای اصلاح این مشکل، از تکنیکهای جایگزین مانند defer ،async یا تقسیم هوشمندانه کد (Code Splitting) استفاده کنید. با این روش، فقط اسکریپتهای ضروری در مرحله اولیه لود میشوند و سایر بخشها در پسزمینه یا هنگام نیاز بارگذاری خواهند شد.
سناریوهای واقعی و الگوهای پیشنهادی
در عمل، بهینهسازی سرعت سایت تنها به انتخاب بین Preload و Prefetch ختم نمیشود، بلکه باید در بافت واقعی پروژه و رفتار کاربر پیادهسازی شود. در ادامه چند سناریوی واقعی را میبینید که نشان میدهند چگونه میتوان با ترکیب درست این دو ویژگی، تجربه کاربری روانتری ایجاد کرد.
سناریوی صفحه لندینگ با تصویر هیرو بزرگ
در صفحات لندینگ که بخش بالایی (Hero Section) معمولاً تعیینکننده اولین برداشت کاربر است، باید CSS اصلی و فونتهای کلیدی را با as="style" و as="font" به همراه crossorigin در حالت Preload بارگذاری کنید. برای تصویر هیرو از ویژگی fetchpriority="high" استفاده نمایید تا مرورگر اهمیت آن را به عنوان عنصر اصلی LCP درک کرده و زنجیره بارگذاری را کوتاهتر کند. اگر در پایین همین صفحه تصاویر متعددی دارید که با اسکرول کاربر نمایش داده میشوند، بهتر است بهجای Preload، از Lazy Load با استفاده از Intersection Observer بهره ببرید تا بار شبکه فقط در زمان نیاز افزایش یابد.
سناریوی فروشگاه اینترنتی
در فروشگاههای آنلاین معمولاً مسیر کاربران از صفحه دستهبندی به صفحه محصول مشخص است. در این حالت میتوانید برای لینک محصولاتی که در محدوده دید کاربر قرار گرفتهاند، Prefetch سبک HTML یا داده JSON اولیه را فعال کنید تا هنگام کلیک، صفحه بدون تأخیر باز شود. همچنین اگر فیلترهای پرکلیک دارید، اسکریپتهای مربوط به آن فیلترها را Prefetch نمایید تا اعمال تغییرات در فیلترها لحظهای احساس شود. اینکار بهویژه در موبایل و شبکههای کند، تجربه کاربر را بهطور محسوسی بهتر میکند.
سناریوی بلاگ یا رسانه آموزشی
در وبلاگها معمولاً کاربران پس از خواندن یک مقاله، روی لینکهای داخلی مقالات مرتبط کلیک میکنند. با تحلیل دادههای رفتاری، میتوانید چند لینک پرتکرار را شناسایی کرده و Prefetch آنها را در لحظهای انجام دهید که لینک وارد محدوده دید کاربر میشود. اینکار باعث میشود پیمایش میان مقالات بدون مکث انجام شود و حس پیوستگی در مطالعه حفظ شود.
ترکیب Preload و Prefetch با دیگر تکنیکهای Performance
بهکارگیری Preload و Prefetch زمانی مؤثر است که با سایر روشهای بهینهسازی سرعت ترکیب شود. پیش از بارگذاری منابع حیاتی خارجی، از preconnect و dns-prefetch برای کاهش تأخیر اتصال استفاده کنید. اگر سرور شما از قابلیت Early Hints (HTTP 103) پشتیبانی میکند، لینکهای Preload را در همان مرحله ارسال نمایید تا مرورگر پیش از دریافت پاسخ اصلی، واکشی منابع را آغاز کند.
در بخش تصاویر، استفاده از فرمتهای فشرده و مدرن مانند WebP یا AVIF باعث کاهش حجم فایلها و بهبود زمان بارگذاری میشود. برای CSS نیز میتوانید کدهای حیاتی را درون HTML به صورت inline قرار دهید و باقی CSS را با preload بارگذاری کرده و پس از onload آن را به stylesheet تبدیل کنید تا از فلش بدون استایل جلوگیری شود.
الگوی پیشنهادی برای CSS:
<style>/* بخش CSS حیاتی */</style>
<link rel="preload" href="/styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="/styles.css"></noscript>
این روش، تعادل میان سرعت رندر اولیه و حفظ استایل کامل صفحه را برقرار میکند.
اندازهگیری اثر و بهینهسازی تکرارشونده
بهبود سرعت بدون اندازهگیری بیمعناست. از ابزارهایی مانند Lighthouse و DevTools Performance برای مشاهده زمان بارگذاری منابع و بررسی مسیر اولویتها استفاده نمایید. در محیط واقعی نیز با دادههای Core Web Vitals وضعیت شاخصهایی مثل LCP ،INP و CLS را ارزیابی کنید.
اگر پس از افزودن Preload ،LCP کاهش پیدا کرده ولی TTFB ثابت مانده است، یعنی منابع حیاتی درست شناسایی شدهاند. در مقابل، اگر بعد از فعالسازی Prefetch زمان تعامل پس از کلیک کاهش یافت، اما نرخ کلیک ثابت ماند، نشان میدهد استراتژی شما در تسهیل ناوبری مؤثر بوده است.
برای پایش مستمر، داشبوردی طراحی کنید که شاخصهای زیر را نمایش دهد:
- درصد کاربرانی که LCP زیر ۲.۵ ثانیه دارند
- میانگین زمان ناوبری بین صفحات از کلیک تا FCP
- نرخ خطای دانلود و تکرار درخواست منابع
- ترافیک مصرفشده توسط Prefetch در مقایسه با کلیکهای واقعی
بهترین شیوهها برای موبایل و شبکههای محدود
در دستگاههای موبایل باید محافظهکارانهتر عمل کنید. Prefetch را فقط برای مسیرهای پرترافیک فعال نمایید و حتماً شرطی مانند هاور یا نزدیک شدن لینک به محدوده دید را لحاظ کنید تا از بار اضافی جلوگیری شود. همچنین، برای جلوگیری از اتلاف پهنای باند، منابع غیرضروری را Preload نکنید.
در تصاویر از ویژگیهای width و height استفاده کنید تا چیدمان صفحه در هنگام لود تغییر نکند و مقدار CLS بهبود یابد. فونتها را نیز با حالت font-display: swap مدیریت نمایید تا متن بلافاصله با فونت جایگزین نمایش داده شود و تجربه کاربر روان باقی بماند.
چکلیست اجرایی برای استفاده اصولی از Preload و Prefetch
- منابع حیاتی رندر اولیه مانند CSS اصلی، فونت تیتر و تصویر هیرو را شناسایی و Preload نمایید.
- برای فونتها نوع (
type) وcrossoriginرا مشخص کرده و از فرمت woff2 استفاده کنید. - برای تصویر اصلی LCP از
fetchpriority="high"بهره ببرید و ابعاد آن را بهطور دقیق تعیین نمایید. - اگر اسکریپتها ماژولی هستند، از
modulepreloadبرای بارگیری سریعتر وابستگیها استفاده کنید. - مسیرهای پرترافیک را از آنالیتیکس استخراج کرده و فقط همانها را Prefetch کنید، ترجیحاً هنگام هاور یا ورود لینک به ویوپورت.
- برای دامنههای خارجی از
preconnectوdns-prefetchاستفاده کنید تا تأخیر اتصال کاهش یابد. - با Lighthouse و DevTools صحت عملکرد Preload و Prefetch را بررسی کرده و منابع بلااستفاده را حذف کنید.
- گزارشهای Web Vitals را بهصورت دورهای بررسی کرده و بر اساس دادههای واقعی تنظیمات را بهروزرسانی نمایید.

استراتژی سرعت سایت: انتخاب هدفمند میان Preload و Prefetch
Preload و Prefetch هر دو ابزار قدرتمندی برای بهینهسازی سرعت سایت هستند، اما فلسفه متفاوتی دارند. Preload سرعت بارگذاری صفحه فعلی را بهبود میدهد و Prefetch تجربه پیمایش در صفحات بعدی را نرمتر میکند. موفقیت در استفاده از این دو، به درک درست از رفتار کاربر، تنظیم دقیق اولویتها و ارزیابی مداوم نتایج بستگی دارد.
بهینهسازی سرعت فرآیندی ایستا نیست؛ بلکه چرخهای تکرارشونده است که با تغییر مسیرهای کاربر، طراحی صفحات و بهروزرسانی مرورگرها باید بهطور مداوم بازبینی شود. زمانی که این رویکرد را با نگاه انسانمحور و دادهمحور ترکیب کنید، نتیجه نهتنها سایتی سریعتر، بلکه تجربهای روانتر و رضایتبخشتر برای کاربران خواهد بود؛ تجربهای که در نهایت به بهبود سئو و اعتماد کاربر منجر میشود.
تهیه شده توسط تیم تخصصی سئو سید احسان خسروی (مدیر، متخصص و مشاور استراتژیک سئو)
메타데이터
- post_id
- e2ac6aaa1c6f
- slug
- راهنمای-جامع-سئو-فنی-تفاوت-preload-و-prefetch-و-الگوی-درست-استفاده-برای-بهینه-سازی-سرعت-e2ac6aaa1c6f
- url
- https://medium.com/@seyed.ehsan.khosravi/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%AC%D8%A7%D9%85%D8%B9-%D8%B3%D8%A6%D9%88-%D9%81%D9%86%DB%8C-%D8%AA%D9%81%D8%A7%D9%88%D8%AA-preload-%D9%88-prefetch-%D9%88-%D8%A7%D9%84%DA%AF%D9%88%DB%8C-%D8%AF%D8%B1%D8%B3%D8%AA-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B3%D8%B1%D8%B9%D8%AA-e2ac6aaa1c6f
- canonical_url
- https://medium.com/@seyed.ehsan.khosravi/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%AC%D8%A7%D9%85%D8%B9-%D8%B3%D8%A6%D9%88-%D9%81%D9%86%DB%8C-%D8%AA%D9%81%D8%A7%D9%88%D8%AA-preload-%D9%88-prefetch-%D9%88-%D8%A7%D9%84%DA%AF%D9%88%DB%8C-%D8%AF%D8%B1%D8%B3%D8%AA-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B3%D8%B1%D8%B9%D8%AA-e2ac6aaa1c6f
- author_url
- https://medium.com/@seyed.ehsan.khosravi
- status
- ok
- fetched_at
- 2026-08-30 08:25:05