Skip to content
بازگشت به وبلاگ

چرا وب‌سایتمان را بعد از ۱۰ سال از وردپرس به Astro منتقل کردیم

بیش از ۱۰ سال وب‌سایتمان را روی وردپرس اجرا می‌کردیم و بعد به Astro مهاجرت کردیم. می‌خواستیم تجربه‌مان را به اشتراک بگذاریم.

Navid K··7 دقیقه مطالعه
چرا وب‌سایتمان را بعد از ۱۰ سال از وردپرس به Astro منتقل کردیم

ما یک افزونه وردپرس می‌سازیم، و وب‌سایت خودمان را از وردپرس منتقل کردیم. می‌دانم چطور به نظر می‌رسد.

بیش از ۱۰ سال سایتمان روی وردپرس بود. کار می‌کرد. ولی با گذشت زمان، مشکلاتش بیشتر به چشم می‌آمد. وقتی ریبرند WSMS پیش آمد، تصمیم گرفتیم همه چیز را از نو با Astro بسازیم و خواستیم تجربه‌مان را به اشتراک بگذاریم، شاید برای کسی که دارد به همین مسیر فکر می‌کند مفید باشد.

چه چیزی دیگر جواب نمی‌داد

ما هنوز فکر می‌کنیم وردپرس عالیست. افزونه‌مان برایش ساخته شده و قرار نیست جایی برویم. ولی برای سایت بازاریابی‌مان، مدام به همان مشکلات برمی‌خوردیم:

بارگذاری صفحات کند بود. افزونه‌های کش، CDN، و همه ترفندهای بهینه‌سازی معمول را داشتیم. ولی هر درخواست هنوز به سرور و دیتابیس می‌زد تا صفحاتی را رندر کند که هفته‌ها تغییر نکرده بودند. همیشه سنگین‌تر از چیزی بود که باید می‌بود.

فرآیند توسعه هم سخت بود. همه چیز داخل یک قالب وردپرس بود. کنترل نسخه نامرتب بود، سیستم کامپوننتی نداشتیم، تایپ‌سیفتی نبود. یک تغییر کوچک یعنی دست زدن به خیلی چیزها و امیدوار بودن که چیزی نشکند. بعد از ۱۰ سال، کدبیس واقعا سنگین شده بود.

سال‌ها این مشکلات را دور می‌زدیم، ولی وقت ریبرند بالاخره از خودمان پرسیدیم: واقعا برای این بخش به وردپرس نیاز داریم؟

چطور به Astro رسیدیم

چند گزینه را بررسی کردیم: Next.js، Hugo، Eleventy. بیشترین وقت را روی ارزیابی Next.js گذاشتیم، ولی برای یک سایت محتوامحور مثل مال ما، Astro خیلی بهتر جواب می‌داد. بیلد سریع‌تر، تجربه توسعه روان‌تر، و بدون پیچیدگی‌هایی که یک فریمورک کامل React همراه دارد وقتی بهش نیاز ندارید. Astro حس می‌کرد دقیقا برای نیاز ما ساخته شده.

چند چیز که برایمان مهم بود:

صفحات به صورت پیش‌فرض استاتیک هستند. یک بار موقع دیپلوی ساخته می‌شوند و به صورت HTML خالص از edge سرو می‌شوند. بدون سرور، بدون کوئری دیتابیس در زمان اجرا. برای سایتی که بیشترش مستندات، پست‌های بلاگ و لندینگ پیج است، این خیلی منطقی‌تر بود.

Astro چیزی دارد به نام Content Collections. اساسا راهی برای سازماندهی محتوا به صورت فایل‌های Markdown/MDX با اسکیماهای تایپ‌شده است. الان بیش از ۲٬۰۰۰ فایل محتوا داریم (پست‌های بلاگ، مستندات، صفحات درگاه، تغییرات) و همه‌شان داخل ریپو به عنوان فایل زندگی می‌کنند، نه ردیف‌هایی در دیتابیس. کار کردن باهاش واقعا لذت‌بخش است.

و وقتی به تعامل نیاز داریم (یک ویجت جستجو، یک ماشین‌حساب قیمت‌گذاری) می‌توانیم یک کامپوننت React اضافه کنیم و Astro فقط برای همان بخش جاوااسکریپت ارسال می‌کند. یک اپلیکیشن کامل React روی هر صفحه ارسال نمی‌شود.

تجربه توسعه برای ما خیلی بهتر است: TypeScript، Tailwind، هات ریلود، Storybook برای تست کامپوننت‌ها به صورت ایزوله. ورک‌فلویی بود که سال‌ها می‌خواستیم.

هوش مصنوعی و ابزارها این را ممکن کردند

این بخشی است که بیشتر از همه هیجان‌زده‌ایم به اشتراک بگذاریم. از Claude برای بخش بزرگی از این پروژه استفاده کردیم.

سایتمان بیش از ۲۰۰ کامپوننت React دارد. ساختن همه اینها دستی، با پشتیبانی RTL و استوری‌های Storybook برای هر کدام، خیلی طول می‌کشید. هوش مصنوعی کارهای تکراری را انجام داد و ما روی تصمیمات طراحی و کیفیت تمرکز کردیم.

همچنین از آن برای مهاجرت سال‌ها محتوای وردپرس به فایل‌های ساختاریافته MDX و ترجمه سایت به سه زبان (انگلیسی، فارسی، عربی) استفاده کردیم. ترجمه‌ها نیاز به ویرایش دستی برای لحن و دقت داشتند، ولی داشتن یک نسخه اولیه خوب کل فرآیند را واقع‌بینانه کرد.

یک دلیل بزرگ دیگر که Astro را انتخاب کردیم: چون محتوا فقط فایل‌های Markdown در یک ریپو است، ایجنت‌های کدنویسی عالی باهاش کار می‌کنند. تیممان روزانه از Claude Code و Codex استفاده می‌کند و آنها می‌توانند بدون هیچ تنظیم خاصی محتوا و کامپوننت بخوانند، ویرایش کنند و بسازند. بدون API سیستم مدیریت محتوا، بدون کوئری دیتابیس. ایجنت‌ها فقط با فایل‌ها کار می‌کنند و این ساده‌ترین کاری است که خوب انجام می‌دهند.

برای بررسی کیفیت، از SquirrelScan برای بررسی دسترسی‌پذیری، سئو، عملکرد و مشکلات دیگر صفحات استفاده می‌کنیم. چیزهایی را می‌گیرد که دستی از دستمان در می‌رفت و بخش ثابتی از ورک‌فلومان قبل از پوش کردن تغییرات شده.

صادقانه، بدون هوش مصنوعی و این ابزارها این پروژه خیلی بیشتر طول می‌کشید. معادله‌ی اینکه چه چیزی برای یک تیم کوچک ممکن است را تغییر داد.

وردپرس را کاملا ترک نکردیم

این مهم است. کارها را تقسیم کردیم.

wsms.io سایت Astro است. صفحات بازاریابی، بلاگ، مستندات، همه محتوای عمومی. کاملا استاتیک، دیپلوی شده روی Cloudflare Pages.

my.wsms.io هنوز وردپرس با WooCommerce است. حساب‌های کاربری، خریدها، مدیریت لایسنس، پرداخت. وردپرس این کارها را واقعا خوب انجام می‌دهد و دلیلی نداشت از نو بسازیمش.

این تقسیم تمیز بوده. سایت بازاریابی به دیتابیس نیاز ندارد. پرتال حساب کاربری نیاز دارد. هر طرف کاری را انجام می‌دهد که در آن خوب است.

پشتیبانی RTL که واقعا کار می‌کند

این برای ما شخصی است. بخش بزرگی از کاربرانمان فارسی و عربی می‌خوانند، و درست کردن RTL در وردپرس همیشه دردناک بود. قالب‌ها خراب می‌شدند، افزونه‌ها پشتیبانیش نمی‌کردند و هماهنگ نگه داشتن محتوا بین زبان‌ها سردرد دائمی بود.

با Astro، پشتیبانی RTL را از روز اول در سیستم کامپوننت‌ها ساختیم. هر کامپوننت جهت متن و زبان را می‌شناسد. آیکون‌ها خودکار معکوس می‌شوند. فونت‌ها درست بارگذاری می‌شوند. این یک فکر بعدی نیست. بخشی از نحوه کار سایت است.

نتیجه این است که کاربران فارسی‌زبان و عربی‌زبان ما سایتی دارند که برایشان طبیعی حس می‌کند، نه مثل یک صفحه انگلیسی آینه‌شده.

چه چیزی بعد از مهاجرت تغییر کرد

بنچمارک رسمی نداریم، ولی تفاوت‌ها در استفاده روزانه واضح است:

صفحات به طور محسوسی سریع‌تر بارگذاری می‌شوند. HTML استاتیک از edge Cloudflare، بدون رفت و برگشت سرور.

کار کردن روی سایت الان واقعا لذت‌بخش است. می‌توانیم Storybook را بالا بیاوریم، یک کامپوننت بسازیم، ایزوله ببینیمش و در عرض چند دقیقه لایو کنیم. ورک‌فلوی قبلی اصطکاک خیلی بیشتری داشت.

دیپلوی ساده است. پوش به گیت، سایت بیلد می‌شود و در سراسر دنیا لایو می‌شود. بدون مایگریشن دیتابیس، بدون مراسم پاک کردن کش.

هزینه هاستینگ هم کم شد. Cloudflare Pages برای سایت‌های استاتیک رایگان است، پس سایت بازاریابی هزینه‌ای برای هاست ندارد. تغییر خوبی نسبت به هاستینگ مدیریت‌شده وردپرس است.

جستجوی تمام‌متن را با Pagefind اضافه کردیم که ایندکسش را موقع بیلد می‌سازد. جستجو در بیش از ۲٬۰۰۰ صفحه بدون هیچ هزینه اجرایی. این یک سورپرایز خوب بود.

چند نکته برای کسی که دارد به این فکر می‌کند

سایت‌های استاتیک بیشتر از آنچه فکر می‌کنید توانایی دارند. ما هم تعجب کردیم چقدر می‌شود با Astro ساخت. محدودکننده نیست. فقط هوشمندانه انتخاب می‌کند کجا جاوااسکریپت اجرا شود.

فایل‌ها در ریپو بهتر از ردیف‌ها در دیتابیس هستند برای محتوایی مثل مال ما. نسخه‌بندی، همکاری، پشتیبان‌گیری. همه چیز ساده‌تر می‌شود وقتی محتوایتان فقط فایل است.

لازم نیست همه چیز را مهاجرت کنید. نگه داشتن وردپرس برای کارهایی که خوب انجام می‌دهد (تجارت الکترونیک، حساب‌های کاربری) تصمیم درستی بود. کلید کار این بود که بفهمیم کدام بخش‌ها باید استاتیک باشند و کدام نه.

هوش مصنوعی معادله را تغییر می‌دهد. پروژه‌ای به این اندازه قبلا به تیم بزرگ یا زمان‌بندی طولانی نیاز داشت. لزوما دیگر اینطور نیست.

جمع‌بندی

اگر سایت محتوایی روی وردپرس دارید و از همان چیزهایی که ما ناراحت بودیم ناراحتید (صفحات کند، ورک‌فلوی توسعه دردناک، قالب‌های سخت برای نگهداری) شاید ارزش داشته باشد Astro را بررسی کنید. برای ما خیلی خوب جواب داد.

نمی‌گوییم وردپرس بد است. ما واقعا نرم‌افزار برایش می‌سازیم. ولی برای سایتی مثل مال ما، Astro ابزار بهتری بود.

می‌خواستیم این را به اشتراک بگذاریم چون وقتی داشتیم تصمیم می‌گرفتیم دنبال تجربه‌های مشابه گشتیم و زیاد پیدا نکردیم از تیم‌هایی در موقعیت ما. امیدواریم برای کسی مفید باشد.