
معماری
پالس یک اپلیکیشن Next.js است که روی یک API نوشتهشده با Go مینشیند. این جدایی عمدی است: هر چه به داده مربوط میشود در Go میماند و هر چه رندر میشود در Next.
همین بلاگی که میخوانید نمونهٔ کوچکی از همان الگوست. محتوا در یک CMS بدونهِد نگهداری میشود که با Go نوشتهایم. متنها Markdown هستند و در لحظهٔ ذخیره به HTML امن تبدیل میشوند، نه در لحظهٔ نمایش؛ یعنی هزینهٔ تبدیل و پاکسازی یک بار پرداخت میشود، نه به ازای هر بازدید.
کشینگ
صفحهها هنگام build ساخته میشوند و بعد از آن ثابت میمانند. وقتی نویسندهای چیزی منتشر میکند، CMS یک وبهوک میزند و فقط همان صفحههای تحتتأثیر دوباره ساخته میشوند — بدون دیپلوی دوباره.
آنچه در عمل یاد گرفتیم این بود: وقتی اپ چند نسخه (replica) دارد، آن وبهوک فقط به یکی از آنها میرسد و بقیه محتوای قدیمی را نگه میدارند. بهجای کش بیپایان، برای هر لودر یک پنجرهٔ کوتاه stale-while-revalidate گذاشتیم: هر نسخه ظرف چند ثانیه خودش را تازه میکند و وبهوک همچنان روی نسخهای که به آن میرسد اثر فوری دارد.
دوزبانه از روز اول
فارسی و انگلیسی دو نمای یک محتوا نیستند؛ دو نوشتهٔ مستقلاند که با یک کلید ترجمه به هم وصل میشوند. به همین دلیل هر زبان نشانی (slug) خودش را دارد و جابهجایی زبان، خواننده را به همان نوشته در زبان مقصد میبرد، نه به صفحهٔ اول.
راستچین بودن هم صرفاً یک dir="rtl" نیست: فاصلهگذاریها منطقی نوشته میشوند تا خودشان قرینه شوند، و برای فارسی از جفتقلم جداگانه استفاده میکنیم، چون خط فارسی متصل است و فاصلهٔ حروفِ تنگ که برای لاتین خوب است، آن را ناخوانا میکند.
