تصور کنید ماهها برای بهینهسازی سایت وردپرسی خود زمان گذاشتهاید؛ تصاویر را فشرده کردهاید، افزونههای کش را تنظیم کردهاید و امتیاز PageSpeed سایت شما در بهترین حالت ممکن است. اما با این وجود، وقتی کاربر در سایت شما روی یک لینک کلیک میکند، هنوز چند ثانیه زمان میبرد تا صفحه بعدی روی صفحه نمایشگر او ظاهر شود. این تأخیر کلافهکننده دقیقاً همان نقطهای است که ابزارهای سنتی بهینهسازی سرعت، دیگر کاری از پیش نمیبرند.
یکی از راهکارهای مدرن و مرتبط با این مسئله، آمادهسازی احتمالی منابع یا صفحات مقصد قبل از کلیک کاربر است. در دنیای وب، این مفهوم با نام Prefetch شناخته میشود. هدف از این تکنیک، کاهش زمان انتظار کاربر در هنگام جابهجایی بین صفحات است تا تجربهای روان و شبیه به اپلیکیشنهای بومی خلق شود.
با این حال، پیشبارگذاری صفحات وردپرس یک راهحل جادویی نیست. استفاده نادرست از آن نهتنها سرعت را بالا نمیبرد، بلکه میتواند باعث فشار شدید به سرور و کندی کل سایت شود. در این مقاله قصد داریم بهصورت کاملاً عمیق و کاربردی بررسی کنیم که Prefetch لینک چیست، مرورگر چگونه با آن رفتار میکند و چطور میتوانیم از آن بهدرستی در سایت وردپرسی خود استفاده کنیم.
Prefetch چیست؟
واژه Prefetch (پیشدریافت یا پیشبارگذاری) به یک دستورالعمل در مرورگرهای وب اشاره دارد که به مرورگر میگوید: «احتمالاً کاربر در آینده نزدیک به این منبع یا صفحه نیاز پیدا خواهد کرد؛ لطفاً در زمانی که بیکار هستی، آن را در پسزمینه دانلود کن».
در واقع، Prefetch برای آینده طراحی شده است. وقتی مرورگر این دستور را میبیند، در زمانهای بیکاری خود (Idle Time) به سرور درخواست میفرستد و محتوای صفحه یا فایل موردنظر (مثل کدهای HTML) را دریافت کرده و در حافظه کش (Cache) خود ذخیره میکند.
دلیل اینکه این کار زمان انتظار را کاهش میدهد بسیار ساده است: وقتی کاربر در نهایت روی لینک آن صفحه کلیک کند، مرورگر نیازی به برقراری ارتباط مجدد با سرور و دانلود کدهای HTML ندارد، بلکه صفحه را مستقیماً از حافظه محلی خود فراخوانی میکند که در کسری از ثانیه انجام میشود.
یک مثال ساده: فرض کنید کاربر وارد صفحه اصلی یک فروشگاه اینترنتی شده است. آمار نشان میدهد که بیشتر کاربران پس از صفحه اصلی، وارد صفحه «تخفیفهای ویژه» میشوند. با استفاده از Prefetch، مرورگر در پسزمینه فایل HTML صفحه تخفیفها را دانلود میکند. وقتی کاربر روی لینک کلیک کرد، صفحه بلافاصله و بدون مکث باز میشود؛ زیرا صفحه از قبل در دستگاه او آماده است.
Prefetch در وردپرس چگونه کار میکند؟
فرآیند آمادهسازی صفحه قبل از کلیک در سایتهای وردپرسی، یک پروسه مشخص و مرحلهبهمرحله است:
-
حضور کاربر در صفحه: کاربر در حال مطالعه یک مقاله یا بررسی یک صفحه در سایت شماست.
-
شناسایی لینک هدف: مرورگر (یا اسکریپتی که در سایت وردپرسی خود قرار دادهاید) یک لینک احتمالی را که کاربر ممکن است روی آن کلیک کند، شناسایی میکند.
-
ارزیابی شرایط: مرورگر بررسی میکند که آیا منابع سیستم و سرعت اینترنت برای انجام یک درخواست در پسزمینه مناسب است یا خیر.
-
درخواست در پسزمینه: در صورت مساعد بودن شرایط، مرورگر کدهای HTML صفحه بعدی را دانلود کرده و در کش پنهان خود نگه میدارد. بخش عمدهای از زمان انتظار (مانند زمان پاسخ سرور و دانلود) در همین مرحله پنهان سپری میشود.
-
کلیک کاربر: کاربر تصمیم میگیرد روی لینک موردنظر کلیک کند.
-
فراخوانی فوری: مرورگر بهجای ارسال درخواست جدید به سرور، صفحه را از کش محلی خود میخواند و روند نمایش (رندر) را آغاز میکند.
دقت داشته باشید که Prefetch الزاماً به معنی دریافت کامل تمام منابع صفحه مقصد (مانند تکتک تصاویر، ویدیوها و فونتها) نیست. معمولاً فقط سند اصلی HTML دریافت میشود تا پایهایترین بخش صفحه برای نمایش سریع آماده باشد.
Prefetch چه چیزی را سریعتر میکند؟
برای درک بهتر عملکرد WordPress prefetch، باید بدانیم در زمان باز شدن یک صفحه وب چه اتفاقاتی میافتد و این تکنیک دقیقاً کدام بخش را بهبود میبخشد:
-
زمان شروع درخواست و پاسخ سرور (TTFB): Prefetch این بخش را بهطور کامل در پسزمینه انجام میدهد. بنابراین وقتی کاربر کلیک میکند، زمان TTFB برای او عملاً صفر به نظر میرسد.
-
دریافت منابع اولیه: دانلود کدهای HTML از قبل انجام شده است.
اما چه چیزی را سریعتر نمیکند؟ Prefetch قرار نیست سرور کندِ شما را قدرتمند کند، کدهای جاوا اسکریپت سنگین را بهینهسازی کند یا تصاویر حجیم را جادویی فشرده نماید. زمان رندر صفحه (ترسیم عناصر روی مانیتور) و اجرای اسکریپتهای پیچیده همچنان پس از کلیک کاربر باید انجام شوند.
تفاوت Prefetch با Preload چیست؟
یکی از رایجترین اشتباهات در بهینهسازی سرعت، اشتباه گرفتن این دو مفهوم است:
-
Preload (پیشبارگذاری منابع حیاتی): با بالاترین اولویت اجرا میشود. مرورگر را مجبور میکند فایلی را که برای همین صفحهی فعلی ضروری است (مثل تصویر شاخص صفحه یا فونت اصلی) سریعاً دانلود کند.
-
Prefetch (پیشدریافت منابع آینده): با کمترین اولویت اجرا میشود. به مرورگر پیشنهاد میدهد که فایلی را برای صفحهی بعدی (که کاربر هنوز وارد آن نشده) دانلود کند.
مثال واقعی: شما از Preload برای لود سریع لوگوی سایتی که کاربر الان در آن حضور دارد استفاده میکنید، اما از Prefetch برای آمادهسازی صفحه «تماس با ما» که شاید کاربر بعداً به آن سر بزند بهره میبرید.
تفاوت Prefetch با Prerender چیست؟
این قسمت برای سلامت سرور شما بسیار حیاتی است. تفاوت این دو متد از زمین تا آسمان است:
-
Prefetch: فقط فایل (معمولاً HTML) را در پسزمینه دانلود کرده و در کش نگه میدارد. هیچ پردازشی روی کدها انجام نمیشود.
-
Prerender: مرورگر در یک تب پنهان، نهتنها صفحه بعدی را دانلود میکند، بلکه کدهای جاوا اسکریپت آن را اجرا کرده، DOM را میسازد و صفحه را کاملاً رندر (رسم) میکند.
چرا Prerender خطرناکتر است؟ Prerender بسیار سنگین است. هم از منابع سختافزاری دستگاه کاربر (باتری و پردازنده) بهشدت کار میکشد و هم فشار مضاعفی به سرور میآورد. به همین دلیل نباید بدون دلیل صفحات زیادی را Prerender کرد، در حالی که Prefetch بسیار سبکتر و کمخطرتر است.
DNS Prefetch چیست و چه تفاوتی با Link Prefetch دارد؟
این دو مفهوم با وجود نامهای مشابه، کاربردهای کاملاً متفاوتی دارند و باید آنها را از هم جدا کنید:
-
DNS Prefetch: این تکنیک فقط نام دامنه را به آدرس IP تبدیل (Resolve) میکند. برای مثال، اگر در سایتتان از تصاویر یک سرور خارجی (مثل CDN) استفاده میکنید، DNS Prefetch فقط آدرس سرور را پیدا میکند، اما فایلی دانلود نمیکند. این کار بسیار سبک است.
-
Link Prefetch: همانطور که بررسی کردیم، این متد فایل یا صفحه مقصد را دانلود میکند. حجم این عملیات بسیار بیشتر از یک جستجوی ساده DNS است.
چه زمانی Prefetch واقعاً مفید است؟
استفاده از افزایش سرعت جابهجایی بین صفحات با این تکنیک، در سناریوهای زیر معجزه میکند:
-
فروشگاه اینترنتی: کاربر در صفحه دستهبندی «کفشهای ورزشی» است و موس خود را روی اولین محصول میبرد. احتمال کلیک بسیار بالاست.
-
سایتهای محتوایی و وبلاگها: زمانی که کاربر به انتهای یک مقاله میرسد، احتمال کلیک روی مقالات مرتبط یا دکمه «مقاله بعدی» بسیار زیاد است.
-
صفحات لندینگ پیج (Landing Pages): زمانی که هدف صفحه هدایت کاربر به فرم ثبتنام یا صفحه پرداخت است، لینک هدف کاملاً مشخص و محتمل است.
چه زمانی نباید از Prefetch استفاده کنیم؟
آمادهسازی صفحه قبل از کلیک همیشه هم مفید نیست. در موارد زیر اجرای آن به ضرر شما تمام میشود:
-
تعداد بسیار زیاد لینک: اگر در منوی سایتتان ۵۰ لینک دارید، پیشبارگذاری همه آنها سرور را از کار میاندازد.
-
صفحات دارای عملیات حساس (State-changing): صفحاتی مثل «خروج از حساب کاربری» یا «افزودن به سبد خرید» با هر بار فراخوانی عملیاتی انجام میدهند. اگر مرورگر در پسزمینه آنها را فراخوانی کند، ممکن است کاربر ناخواسته از حسابش خارج شود!
-
صفحات خصوصی: پنل کاربری یا ادمین وردپرس نیازی به پیشبارگذاری ندارند، زیرا محتوای آنها کاملاً پویا است و نباید کش شود.
-
دستگاهها و اینترنتهای ضعیف: اگر کاربر با اینترنت 3G و دیتا محدود وارد سایت شده، نباید حجم اینترنت او را برای صفحاتی که شاید باز نکند مصرف کنید.
آیا Prefetch مصرف اینترنت را افزایش میدهد؟
پاسخ صریح به این سؤال بله است.
مکانیزم prefetch لینک به این صورت است که اطلاعات را زودتر دریافت میکند. طبیعتاً ممکن است دادهای دانلود شود که کاربر در نهایت هرگز روی آن کلیک نکند. این یعنی بخشی از پهنای باند سرور شما و ترافیک اینترنت کاربر هدر رفته است.
به همین دلیل است که هدف ما از اجرای Prefetch در مرورگر باید انتخابِ محدود و منطقی مقصدها باشد، نه آمادهسازی همه لینکهای موجود در یک صفحه.
آیا Prefetch روی موبایل هم مفید است؟
شرایط موبایل و دسکتاپ با هم متفاوت است. در موبایل معمولاً شبکهها کندتر (3G/4G)، هزینه دادهها بیشتر و قدرت پردازنده دستگاه کمتر است.
از یک طرف، به دلیل کندتر بودن شبکههای موبایل، تأخیر شبکه (Latency) بیشتر است؛ بنابراین پیشبارگذاری لینک میتواند احساس کندی را به شدت کاهش دهد. از طرف دیگر، مصرف داده و باتری معضلی جدی است.
نتیجه؟ Prefetch در موبایل بسیار مفید است، اما فقط و فقط اگر بهصورت هوشمند پیادهسازی شود و به هدرهای مرورگر (مثل Save-Data که نشان میدهد کاربر در حالت صرفهجویی اینترنت است) احترام بگذارد.
چگونه Prefetch را در وردپرس پیادهسازی کنیم؟
برای فعال کردن Prefetch در وردپرس چندین راهکار وجود دارد که بسته به سطح فنی و نیاز سایت شما متفاوت است:
استفاده مستقیم از قابلیتهای مرورگر
ابتداییترین روش، قرار دادن تگ مربوطه در بخش <head> سایت است. میتوانید این کد را به فایل header.php قالب خود اضافه کنید: <link rel="prefetch" href="[https://yoursite.com/next-page/](https://yoursite.com/next-page/)"> این روش دستی است و فقط برای لینکهای بسیار خاص (مثل لینک صفحه عضویت در صفحه اصلی) کاربرد دارد.
استفاده از قابلیتهای مدرن مرورگر (Speculation Rules)
اخیراً مرورگرها (مخصوصاً کروم) از API جدیدی به نام Speculation Rules پشتیبانی میکنند که با استفاده از کدهای JSON به مرورگر میفهماند کدام لینکها باید آماده شوند. این روش بهینهتر و مدرنتر از تگ لینک است.
استفاده از افزونههای وردپرس
سادهترین راه برای کاربران وردپرس، استفاده از افزونههای بهینهسازی سرعت است. بسیاری از افزونههای معروف کش و پرفورمنس، بخشی برای فعالسازی «Link Prefetching» یا «Hover to Load» دارند که با زدن یک تیک فعال میشوند.
پیادهسازی Prefetch هوشمند بر اساس رفتار کاربر
بهترین روش این است که اسکریپتهایی در سایت قرار دهید (یا از افزونههای تخصصی استفاده کنید) که بر اساس رفتار کاربر (مثلاً وقتی ماوس را برای بیش از ۶۰ میلیثانیه روی یک لینک نگه میدارد) عملیات را آغاز کنند.
آیا Prefetch باید همه لینکهای صفحه را آماده کند؟
بدترین اشتباهی که یک مدیر سایت میتواند مرتکب شود، Prefetch کردن همه لینکها است.
فرض کنید مقالهای با ۳۰ لینک داخلی دارید. اگر قرار باشد با لود شدن این صفحه، مرورگر کاربر در پسزمینه ۳۰ صفحه دیگر را هم دانلود کند، هم اینترنت کاربر بهشدت مصرف میشود و هم سرور شما باید پاسخگوی ۳۰ درخواست بیدلیل در یک لحظه باشد! این کار باعث میشود کاربر احساس کند سایت بهشدت کند شده است.
در مقابل، Prefetch لینکهای محتمل رویکردی منطقی است. یعنی ما فقط لینکهایی را آماده میکنیم که کاربر با احتمال بسیار بالا قصد ورود به آنها را دارد. انتخاب هوشمند مقصدها، فشار غیرضروری روی شبکه و هاست را کاملاً از بین میبرد.
Prefetch هوشمند چیست؟
Prefetch هوشمند (Smart Prefetching) رویکردی است که در آن، کدها با در نظر گرفتن متغیرهای مختلف تصمیم میگیرند چه زمانی چیزی را دانلود کنند. ویژگیهای یک سیستم هوشمند عبارتند از:
-
توجه به رفتار کاربر: صفحه فقط زمانی دانلود میشود که کاربر روی لینک اسکرول کند، یا ماوس خود را (Hover) روی آن ببرد و مکث کند.
-
تشخیص لینکهای مهم در صفحه نمایش: فقط لینکهایی که در دید کاربر (Viewport) هستند بررسی میشوند، نه لینکهای فوتر یا انتهای صفحه.
-
رعایت شرایط شبکه: اگر کاربر در شبکه 3G یا در حالت صرفهجویی باتری باشد، عملیات بهطور خودکار متوقف میشود.
-
محدود کردن تعداد درخواستها: در لحظه بیش از ۲ یا ۳ درخواست همزمان به سرور ارسال نمیشود.
چرا Prefetch بهتنهایی مشکل کندی وردپرس را حل نمیکند؟
باید واقعبین باشیم. Prefetch در وردپرس فقط روی بخشی از تجربه جابهجایی بین صفحات اثر میگذارد. اگر وبسایت شما از پایه کند باشد، این تکنیک فقط یک مسکن موقت است. مشکلاتی که با این روش حل نمیشوند عبارتند از:
-
هاست ضعیف و زمان پاسخدهی بالای سرور
-
حجم عظیم کدهای CSS غیرضروری
-
اجرای فایلهای JavaScript سنگین مسدودکننده رندر
-
تصاویر حجیم با فرمتهای نامناسب
-
کوئریهای سنگین و طولانی دیتابیس وردپرس
اگر این مشکلات را در سایت خود دارید، پیشبارگذاری صفحات دردی را درمان نخواهد کرد، زیرا مرورگر حتی در پسزمینه هم زمان زیادی برای دانلود یک صفحه سنگین نیاز دارد. ابتدا پرفورمنس پایه سایت را اصلاح کنید، سپس برای جلا دادن به تجربه کاربری سراغ Prefetch بروید.
چطور بفهمیم Prefetch واقعاً سرعت سایت را بهتر کرده است؟
برای اینکه شخصاً عملکرد آن را تست کنید، مراحل زیر را طی کنید:
-
مرورگر کروم را باز کرده و کلید F12 را بزنید تا DevTools باز شود.
-
به تب Network بروید و مطمئن شوید که تیک Disable cache برداشته شده باشد.
-
وارد سایتی شوید که Prefetch روی آن فعال است. ماوس خود را روی یکی از لینکها نگه دارید (یا کار دیگری که تریگر کننده است انجام دهید).
-
باید ببینید که آدرس صفحه مقصد در لیست Network ظاهر میشود. اگر در ستون Size عبارت (prefetch) را مشاهده کردید، یعنی به درستی کار میکند.
-
حالا روی لینک کلیک کنید. صفحه باید در کسری از ثانیه لود شود و در بخش Network زمان درخواست بسیار کم و از نوع کش محلی ثبت شود.
این تست را با تنظیم وضعیت شبکه روی 3G (در همان تب نتورک) نیز انجام دهید تا تأثیر آن را روی اینترنتهای کندتر بسنجید.
اشتباهات رایج در استفاده از Prefetch
-
آمادهسازی تمام لینکها: ایجاد طوفانی از درخواستها به سرور.
-
پیشبارگذاری صفحات حساس: مثل صفحه لاگین یا افزودن به سبد خرید.
-
نادیده گرفتن مصرف اینترنت موبایل: عدم بررسی وضعیت شبکه کاربر.
-
استفاده کورکورانه و بدون تست: فعال کردن قابلیت و رها کردن آن بدون بررسی تأثیر روی سرور.
-
اشتباه گرفتن با Preload: استفاده از prefetch برای فایلهایی که در صفحه فعلی حیاتی هستند.
-
تصور حل مشکل سرور: انتظار اینکه این قابلیت جایگزین خرید هاست قدرتمند شود.
-
فعال کردن چند سیستم همزمان: استفاده از دو یا سه افزونه که کار مشابه را همزمان انجام میدهند (تداخل شدید).
-
فراموش کردن محدودیتها (Rate Limiting): عدم اعمال محدودیت برای تعداد درخواستهای در ثانیه.
آیا Prefetch برای فروشگاههای ووکامرس مناسب است؟
ووکامرس یکی از بهترین بسترها برای پیادهسازی این قابلیت است، اما مانند راه رفتن روی لبه تیغ میماند.
سناریوی عالی در ووکامرس، حرکت از صفحه دستهبندی به صفحه محصول است. وقتی کاربر در صفحه کتانیها در حال چرخیدن است و ماوس را روی محصول خاصی نگه میدارد، دریافت اطلاعات آن صفحه تجربه خرید را لذتبخش میکند و باعث رفع کندی صفحه محصول و دسته بندی محصولات میشود.
اما از طرفی، ووکامرس پر از صفحات داینامیک است. شما به هیچ وجه نباید لینکهای زیر را Prefetch کنید:
-
لینکهای
?add-to-cart=(ممکن است در پسزمینه محصولاتی به سبد کاربر اضافه شود!) -
صفحه سبد خرید (Cart) و تسویهحساب (Checkout)
-
حساب کاربری (My Account) و صفحات مربوط به لاگین
یک پیکربندی صحیح در ووکامرس مستلزم این است که لینکهای حساس و پارامترهای پویا حتماً در لیست سیاه (Exclude list) قرار بگیرند.
جمعبندی
مفهوم Prefetch در وردپرس به زبان ساده یعنی دانلود فایلها و کدهای یک صفحه در پسزمینه، پیش از آنکه کاربر روی لینک آن صفحه کلیک کند. این تکنیک میتواند زمان انتظار کاربر هنگام جابهجایی در سایت را به صفر نزدیک کند و حس کار با یک نرمافزار حرفهای را به او منتقل نماید.
با این حال، باید به یاد داشته باشیم که این راهکار فقط روی زمان انتقال بین صفحات مؤثر است و جایگزینی برای بهینهسازی اصولی (مثل فشردهسازی عکسها، ارتقای سرور و سبکسازی کدها) نیست. استفاده هوشمندانه و محدود از Prefetch—یعنی تمرکز روی لینکهای پربازدید و توجه به محدودیتهای شبکه کاربر—کلید موفقیت آن است. پیادهسازی نادرست و پیشبارگذاری تمام لینکها، نتیجهای جز مصرف بیدلیل اینترنت و کند شدن سرور در بر نخواهد داشت.
سؤالات متداول
۱. Prefetch در وردپرس چیست؟ روشی است که به مرورگر دستور میدهد در زمان بیکاری خود، فایلهای صفحات هدف را دانلود کند تا پس از کلیک کاربر، صفحه سریعتر باز شود.
۲. آیا Prefetch سرعت سایت را زیاد میکند؟ این تکنیک سرعت بارگذاری پایه سایت را افزایش نمیدهد، بلکه احساس کندی در زمان جابهجایی بین صفحات وبسایت را برای کاربر برطرف میکند.
۳. تفاوت Prefetch و Preload چیست؟ Preload برای دریافت منابع ضروری همان صفحه فعلی است (با اولویت بالا)، اما Prefetch برای دریافت منابع صفحهای است که کاربر شاید در آینده به آن برود (با اولویت پایین).
۴. تفاوت Prefetch و Prerender چیست؟ Prefetch فقط فایلها را دانلود و کش میکند، اما Prerender علاوه بر دانلود، کدهای جاوا اسکریپت را اجرا کرده و صفحه را کاملاً رندر میکند (بسیار سنگینتر است).
۵. آیا Prefetch اینترنت بیشتری مصرف میکند؟ بله، زیرا فایلهایی دانلود میشوند که ممکن است کاربر هرگز روی لینک آنها کلیک نکند. به همین دلیل باید هوشمندانه استفاده شود.
۶. آیا Prefetch برای موبایل مناسب است؟ بله، اما فقط اگر سیستم پیادهسازی شده، وضعیت اینترنت موبایل و حالت ذخیره داده (Save-Data) را بررسی کند تا اینترنت کاربر بیدلیل هدر نرود.
۷. چگونه Prefetch را در وردپرس فعال کنیم؟ از طریق قرار دادن دستی تگهای لینک در هدر قالب، استفاده از Speculation Rules، یا استفاده از افزونههای تخصصی بهینهسازی سرعت وردپرس.
۸. آیا Prefetch همه لینکها را آماده میکند؟ خیر، نباید اینطور باشد! پیشبارگذاری همه لینکها سرور را از کار میاندازد. فقط باید لینکهایی که کاربر با احتمال زیاد قصد ورود به آنها را دارد آماده شوند (مثل هاور کردن ماوس).
۹. آیا Prefetch روی ووکامرس مفید است؟ بله، برای جابهجایی بین صفحات محصول و دستهبندی عالی است؛ اما نباید برای صفحات سبد خرید، پرداخت و خروج از حساب کاربری فعال شود.
۱۰. آیا Prefetch باعث افزایش فشار روی سرور میشود؟ اگر تنظیمات بهدرستی انجام نشود و همه صفحات پیشبارگذاری شوند، بله، فشار زیادی به سرور و دیتابیس وارد میشود.

