در این مقاله، روشهای افزایش سرعت سایت وردپرسی را بررسی میکنیم؛ از پاکسازی و کاهش حجم غیرضروری پایگاه داده گرفته تا حذف دادههای اضافی، بهینهسازی کوئریهای کند و نگهداری بهتر از بخش پشتیبان سایت.
وقتی صحبت از افزایش سرعت وردپرس میشود، بیشتر افراد معمولاً به دو راهکار فکر میکنند: استفاده از افزونههای کش و کاهش حجم تصاویر. هر دو روش مؤثر و ضروری هستند، اما همیشه مشکل اصلی را برطرف نمیکنند.
یکی از مهمترین عوامل تأثیرگذار بر سرعت سایت، پایگاه دادهای است که بهمرور زمان با دادههای اضافی و غیرضروری شلوغ شده است. چنین پایگاه دادهای میتواند باعث افزایش زمان اجرای کوئریها، مصرف بیشتر منابع سرور و در نهایت کاهش سرعت سایت و پیشخوان وردپرس شود.
مرحلهٔ ۱: قبل از بهینهسازی پایگاهداده وردپرس، اندازهگیری انجام دهید

هنوز هیچ چیزی را حذف نکنید. ابتدا مشخص کنید که دقیقاً چه چیزی کند است.
• افزونهٔ Query Monitor را روی یک سایت آزمایشی (staging) نصب کنید تا بتوانید پرسوجوهای کند را شناسایی کنید.
• در صورت دسترسی، لاگ پرسوجوهای کند سرور خود را بررسی کنید.
• زمان فعلی بارگذاری صفحهٔ شما را (بهویژه «زمان تا اولین بایت» یا Time to First Byte) ثبت کنید تا بتوانید نتایج قبل و بعد را مقایسه کنید.
مرحلهٔ ۲: جدول wp_options را اصلاح کنید

برخی از این تنظیمات با برچسب «بارگذاری خودکار» (autoload) علامتگذاری شدهاند؛ یعنی در هر بار بازدید از هر صفحهای — حتی اگر آن صفحه به آن تنظیمات نیاز نداشته باشد — در حافظه بارگذاری میشوند.
با گذشت زمان، افزونهها دادههای اضافی را در این جدول ذخیره میکنند و اغلب فراموش میکنند که آنها را پاک کنند. افزایش حجم غیرضروری جدول wp_options میتواند بهصورت نامحسوس ۱۰۰ تا ۲۰۰ میلیثانیه به زمان بارگذاری هر صفحه اضافه کند.
<span style="font-size: 12pt;">SELECT option_name, CHAR_LENGTH(option_value) / 1024 AS size_kb, autoload FROM wp_options WHERE autoload = ‘yes’ ORDER BY CHAR_LENGTH(option_value) DESC LIMIT 20;</span> <span style="font-size: 12pt;">SELECT SUM(CHAR_LENGTH(option_value)) AS total_size_bytes, COUNT(*) AS total_options FROM wp_options WHERE autoload = ‘yes’;</span>
• چند مگابایت یا بیشتر: بهطور فعال در حال کند کردن سایت شما هستند
<span style="font-size: 12pt;">UPDATE wp_options SET autoload = ‘no’ WHERE option_name = ‘the_offending_option_name’;</span>
⚠️ مراقب باشید: برخی از تنظیمات واقعاً نیازمند بارگذاری خودکار هستند. غیرفعال کردن نادرست یکی از این تنظیمات ممکن است باعث اختلال در عملکرد سایت شما شود. پس از هر تغییر، حتماً تست انجام دهید.
اگر یک افزونه خاص این مشکل را مکرراً ایجاد میکند، آن را به توسعهدهندهٔ افزونه گزارش دهید؛ این واقعاً یک باگ در سمت آنهاست.
مرحلهٔ ۳: ترانزیانتهای قدیمی را پاک کنید

ترانزیانتها روش وردپرس برای ذخیرهٔ موقت اطلاعاتی مانند پاسخهای API هستند.
هر ترانزیانت مدت زمان انقضا دارد، اما نکتهٔ مهم این است که انقضای یک ترانزیانت به معنای حذف خودکار آن نیست. بلکه این دادهها بهصورت غیرفعال در جدول باقی میمانند و فضایی را اشغال میکنند تا زمانی که فرآیندی آنها را پاک کند.
<span style="font-size: 12pt;">SELECT COUNT(*) AS expired_transients, SUM(CHAR_LENGTH(option_value)) AS total_size_bytes FROM wp_options WHERE option_name LIKE ‘%_transient_%’ AND option_name NOT LIKE ‘%_transient_timeout_%’;</span>
اگر فروشگاه آنلاین یا سایت پربازدیدی دارید، این کار را بهصورت یک وظیفهٔ زمانبندیشدهٔ دورهای تنظیم کنید؛ زیرا ترانزیانتها بهسرعت دوباره تجمع مییابند.
مرحلهٔ ۴: تعداد نسخههای ذخیرهشدهٔ مقالات (Post Revisions) را محدود کنید

هر بار که یک مقاله را ذخیره یا ویرایش میکنید، وردپرس بهصورت پیشفرض یک نسخهٔ کامل و دائمی از آن را ذخیره میکند. در سایتهایی که ویرایش زیادی انجام میشود، این امر میتواند منجر به ایجاد هزاران ردیف اضافی شود که هیچ ارتباطی با محتوای اصلی شما ندارند.
</figure> <span style="font-size: 12pt;">sql SELECT COUNT(*) FROM wp_posts WHERE post_type = ‘revision’;</span> <span style="font-size: 12pt;">wp post delete $(wp post list –post_type=’revision’ –format=ids) –force</span>
این دستور تنها سه نسخهٔ اخیر هر مقاله را نگه میدارد؛ کافی برای واگرد دادن اشتباهات اخیر بدون تجمع بیپایان.
مرحلهٔ ۵: متادیتاهای یتیم را حذف کنید

هنگامی که یک افزونه را حذف میکنید، اغلب دادههایی را پشت سر میگذارد؛ یعنی بخشهای کوچکی از اطلاعات که به مقالات، کاربران یا سایر اشیاء اشاره دارند که دیگر وجود ندارند. اکثر افزونههای پاکسازی این موارد را تشخیص نمیدهند، زیرا شناسایی آنها نیازمند بررسی متقابل چندین جدول است.
<span style="font-size: 12pt;">SELECT COUNT(*) AS orphaned_postmeta, SUM(CHAR_LENGTH(meta_value)) AS total_size_bytes FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);</span>
اگر ترجیح میدهید دستورات حذف دستی را اجرا نکنید، افزونهای مانند Advanced Database Cleaner میتواند این دادهها را شناسایی کرده و امکان بررسی آنها را قبل از حذف فراهم کند.
مرحلهٔ ۶: ایندکسهای هوشمند اضافه کنید

جدولهای اصلی وردپرس از پیش برای نیازهای داخلی وردپرس بهخوبی ایندکسگذاری شدهاند. مشکل زمانی پیش میآید که افزونهها یا کدهای سفارشی این جداول را به روشی جستجو میکنند که ایندکسهای پیشفرض از آن پشتیبانی نمیکنند؛ در نتیجه MySQL مجبور میشود کل جدول را اسکن کند.
اگر بهطور مکرر جدول wp_postmeta را برای یک فیلد سفارشی خاص جستجو میکنید، یک ایندکس هدفمند اضافه کنید:
<span style="font-size: 12pt;">sql ALTER TABLE wp_postmeta ADD INDEX idx_meta_key_value (meta_key, meta_value(191));</span>
(عدد «(۱۹۱)» طول ایندکس را محدود میکند که در بسیاری از محیطهای میزبانی برای جلوگیری از خطاهای احتمالی ضروری است.)
مرحلهٔ ۷: درخواست دادههایی را ندهید که نیازی به آنها ندارید
گاهی اوقات راهحل پاکسازی نیست، بلکه نوشتن پرسوجوهای بهتر از ابتداست.
اگر شمارهصفحات (مانند «صفحهٔ ۲ از ۱۰») را نمایش نمیدهید، پرسوجوی محاسبهگر هزینهبر را نادیده بگیرید:
<span style="font-size: 12pt;">$query = new WP_Query( array( ‘post_type’ => ‘post’, ‘posts_per_page’ => 10, ‘no_found_rows’ => true, // پرسوجوی هزینهبر SQL_CALC_FOUND_ROWS را نادیده میگیرد ) );</span>
این تغییر جزئی میتواند بهصورت قابلتوجهی سایتهای بزرگ را بدون هیچ هزینهای شتاببخشد.
مرحلهٔ ۸: جداول را بهینه کنید
اجرای دستور OPTIMIZE TABLE فضای هدررفته را پس از یک پاکسازی گسترده بازپس میگیرد.
• این دستور در حین اجرا جدول را قفل میکند. بنابراین هرگز در ساعات شلوغ اجرا نشود و زمانبندی آن را برای ساعات کمترافیک تنظیم کنید.
• در وردپرس مدرن اهمیت کمتری نسبت به گذشته دارد. توصیههای قدیمی دربارهٔ اجرای مکرر این دستور از سالهای دور نشأت گرفتهاند، زمانی که وردپرس از سیستم ذخیرهسازی متفاوتی (MyISAM) استفاده میکرد. امروزه وردپرس از InnoDB استفاده میکند که در آن این دستور تأثیر بسیار کمتری دارد تا آنچه در توصیههای قدیمی اشاره شده است.
قاعدهٔ کلی: آن را تنها یکبار پس از یک پاکسازی گسترده اجرا کنید، نه بهصورت یک وظیفهٔ هفتگی روتین.
مرحلهٔ ۹: نگهداری دورهای را خودکار کنید
افزایش حجم غیرضروری دوباره رخ میدهد. بهجای انجام دستی این کار در هر فرصت، یک زمانبندی دورهای تنظیم کنید:
• ماهانه: پاکسازی نسخههای ذخیرهشدهٔ مقالات و بررسی متادیتاهای یتیم
• سهماهه: بررسی جامع تنظیمات بارگذاریشدهٔ خودکار
مثال وظیفهٔ cron (اجرا در ساعت ۳ صبح هر شنبه، در زمان کمترافیک):
مرحلهٔ ۱۰: اقدامات گستردهتر
اگر تمام مراحل فوق را انجام دادهاید و همچنان در شرایط ترافیک بالا با محدودیت پایگاهداده مواجه هستید، مرحلهٔ بعدی توزیع پرسوجوهای خواندن بین چندین سرور پایگاهداده است.
وردپرس از این قابلیت از طریق ابزاری به نام HyperDB پشتیبانی میکند که پرسوجوهای خواندن را به سرورهای پشتیبان (replica) هدایت میکند، در حالی که پرسوجوهای نوشتن همچنان به سرور اصلی ارسال میشوند.
این یک پیکربندی پیشرفته است و تنها زمانی ارزش اجرا دارد که ابتدا تمام اصول اساسی فوق را اصلاح کردهاید.
چکلیست سریع اولویتبندیشده
✅ پاکسازی تنظیمات بارگذاریشدهٔ خودکار در جدول wp_options (بزرگترین تأثیر)
✅ پاکسازی ترانزیانتهای منقضیشده و محدود کردن نسخههای ذخیرهشدهٔ مقالات، سپس خودکارسازی هر دو
✅ افزودن ایندکسهای هدفمند در جای مناسب؛ ترجیح دادن دستهبندیها (taxonomies) به جای فیلدهای سفارشی
✅ اجرای دستور OPTIMIZE TABLE تنها پس از پاکسازیهای گسترده و در ساعات کمترافیک
✅ در نظر گرفتن سرورهای خواندن (read replicas) و HyperDB تنها در صورتی که همچنان در مقیاس بزرگ با محدودیت مواجه هستید
عملکرد وردپرس خود را با ما به سطح بالاتری ببرید
بهینهسازی پایگاهدادهٔ وردپرس گامی مهم در جهت بهبود سرعت وبسایت است، اما تنها بخشی از تصویر کلی عملکرد است.
پایگاهدادهای تمیز به وردپرس کمک میکند تا درخواستها را کارآمدتر پردازش کند، اما کاربران شما سرعت را از طریق عواملی مانند ذخیرهسازی موقت (کش)، تحویل تصاویر، بهینهسازی فایلها و عملکرد بخش پیشرو (frontend) تجربه میکنند.
این ابزار ویژگیهای ضروری بهینهسازی را در قالبی یکپارچه ارائه میدهد، از جمله:
— ذخیرهسازی موقت هوشمند صفحات
— ذخیرهسازی موقت اختصاصی برای دستگاههای تلفن همراه
— تبدیل تصاویر به فرمت مدرن WebP
— بارگذاری تأخیری (lazy loading)
— بهینهسازی کدها
— پشتیبانی از شبکهٔ تحویل محتوا (CDN)
تا سایت شما سریعتر بارگذاری شود.
بهجای مدیریت چندین ابزار مختلف برای مشکلات عملکردی متنوع، تیم ما ویژگیهای مهم بهینهسازی را در یک مکان گرد هم میآورد.
کارهای انجام شده و بهینه سازی دیتابیس به کاهش زمان بارگذاری غیرضروری، بهبود تحویل صفحات و ایجاد تجربهای روانتر برای بازدیدکنندگان کمک میکند.
نتیجه نهایی
پاکسازی پایگاه داده تنها به معنای کلیک کردن روی یک دکمهٔ «بهینهسازی» و امیدوار بودن به نتیجهٔ مطلوب نیست. بهبودهای واقعی از طریق موارد زیر حاصل میشوند:
• رفع افزایش غیرضروری گزینههای «autoload» و حذف «transient»های منقضی
در عین حال، برخی از «دانش رایج» مانند اجرای مداوم دستور «OPTIMIZE TABLE» در وردپرس مدرن، تأثیر بسیار کمتری نسبت به آنچه که افراد تصور میکنند دارد.
وبسایتهایی که واقعاً سریعتر میشوند، وبسایتهایی هستند که ابتدا عملکرد خود را اندازهگیری میکنند، سپس بزرگترین مشکلات را اولویتبندی کرده و اقدام به رفع آنها میکنند (مانند حجم بالای گزینههای «autoload» و بار اضافی در پرسوجوها)، و نگهداری پایگاه داده را بهعنوان یک عادت مستمر — نه یک کار یکباره در فصل بهار — در نظر میگیرند.
ذخیرهسازی موقت (کش) و فشردهسازی تصاویر همچنان اهمیت دارند، اما اگر پایگاه داده شما در لایههای زیرین در وضعیت نامناسبی باشد، سرعت را بر پایهای ناپایدار میسازید.
پرسشهای متداول
پاسخهایی به پرسشهای رایج دربارهٔ بهینهسازی پایگاه داده وردپرس، پاکسازی پایگاه داده، بهبود عملکرد و نحوهٔ نگهداری وبسایت وردپرسی سریعتر را بیابید.
بهینهسازی پایگاه داده وردپرس چیست؟
بهینهسازی پایگاه داده وردپرس فرآیندی است که در آن دادههای غیرضروری پاک میشوند، افزایش حجم غیرضروری پایگاه داده کاهش مییابد، پرسوجوها بهینه میشوند و نحوهٔ بازیابی اطلاعات توسط وردپرس بهبود مییابد.
پایگاه دادهای بهینهشده به کاهش بار کاری سرور کمک کرده و در بهبود عملکرد کلی وبسایت نقش دارد.
چرا بهینهسازی پایگاه داده برای وردپرس مهم است؟
بهینهسازی پایگاه داده به وردپرس کمک میکند تا درخواستها را کارآمدتر پردازش کند؛ این امر با حذف دادههای غیرضروری و بهبود عملکرد پرسوجوها انجام میشود.
این کار میتواند زمان پاسخدهی سرور را کاهش داده و تجربهای سریعتر را برای بازدیدکنندگان شما فراهم کند.
چه زمانی باید پایگاه داده وردپرس خود را بهینهسازی کنم؟
پاکسازی «transient»های منقضی هر هفته، بررسی نسخههای ذخیرهشدهٔ مطالب هر ماه و ارزیابی جامع پایگاه داده هر چند ماه یکبار، به جلوگیری از رشد غیرضروری پایگاه داده و حفظ ثبات عملکرد کمک میکند.
چه عواملی باعث افزایش حجم غیرضروری پایگاه داده وردپرس میشوند؟
افزایش حجم غیرضروری پایگاه داده معمولاً ناشی از نسخههای ذخیرهشدهٔ مطالب، «transient»های منقضی، دادههای افزونههای غیرفعال، متادیتاهای یتیم، نظرات اسپم و گزینههای «autoload» غیرضروری است که به مرور زمان انباشته میشوند.
آیا بهینهسازی پایگاه داده بهتنهایی میتواند وبسایت کند وردپرس را رفع کند؟
بهینهسازی پایگاه داده کارایی لایهٔ پشتی (بکاند) را بهبود میبخشد، اما تنها عامل مؤثر بر سرعت وبسایت نیست. تصاویر بزرگ، میزبانی کند، عدم استفاده از ذخیرهسازی موقت (کش)، منابع مسدودکنندهٔ رندر و بهینهسازی رابط کاربری (فرانتاند) نیز نقش عمدهای در عملکرد کلی ایفا میکنند.
رفع مشکل CLS در وردپرس: حذف جابهجاییهای طرح در لحظه
یاد بگیرید چگونه مشکل CLS در وردپرس را با جلوگیری از جابهجاییهای طرح ناشی از تصاویر، فونتها، تبلیغات، محتوای تعبیهشده، محتوای پویا، اسلایدرها و انیمیشنها رفع کنید.
چگونه LCP در وردپرس را کاهش داده و آزمون Paint را با موفقیت پشت سر بگذاریم؟
یاد بگیرید چگونه LCP در وردپرس را با اقدامات عملی مانند بهینهسازی تصاویر، رفع منابع مسدودکنندهٔ رندر، بهبود عملکرد سرور و موفقیت در شاخصهای اصلی عملکرد وب (Core Web Vitals) کاهش دهید.
مقایسهٔ استفاده از افزونه و روش دستی: رفع مشکلات وبسایت کند وردپرس
آیا باید از یک افزونه یا روش دستی برای بهینهسازی وبسایت وردپرس خود استفاده کنید؟ این راهنما هر دو رویکرد را مقایسه کرده، عملکرد هر کدام را توضیح داده و به شما کمک میکند تا روش مناسبی برای رفع مشکلات وبسایت کند وردپرس و بهبود شاخصهای اصلی عملکرد وب (Core Web Vitals) انتخاب کنید.