کدوم سرویسهای Cloudflare رو واقعا لازم داری؟
خلاصهٔ کاملتر
داشبورد Cloudflare پر از محصولای مختلفه: Workers، Pages، KV، D1، R2، Queues، Durable Objects، Workflows، Vectorize، AI Gateway... و خیلی راحته که آدم اول یه محصول رو انتخاب کنه و بعد دنبال یه مشکل بگرده که باهاش حل بشه. فلاویو کوپز، نویسنده این پست، برعکس عمل میکنه: از یه مشکل واقعی شروع میکنه و کوچیکترین چیزی که اون مشکلو حل کنه رو اضافه میکنه. این پست دقیقاً میگه رو سایت خودش و یه پروژه دیگه از چی استفاده میکنه، چرا، و کجا گیر کرده.
سایتش که با Astro ساخته شده، کاملاً استاتیکه و روی Cloudflare Pages میزبانی میشه. تنظیمات build تو فایل wrangler.jsonc نگهداری میشه، نه تو داشبورد؛ یه بار نسخه Node رو تو داشبورد عوض کرده بود ولی بعد از اضافهکردن این فایل، اون تنظیم دیگه هیچ اثری نداشت و build خراب شد. راهحلش یه فایل .node-version تو ریپازیتوری بود. برای دامنه هم، DNS رو از هاستینگ جدا نگه میداره: دامنه ثابته، هاستینگ میتونه عوض بشه.
برای بخشهایی که نیاز به سرور دارن (مثل وبهوک خرید و بازیابی لینک دوره)، از Pages Functions استفاده میکنه؛ این باعث میشه بقیه سایت استاتیک بمونه. یه اشتباه بزرگش این بود که یه middleware ریشهای گذاشته بود که باعث میشد هر درخواست، حتی برای عکس و CSS، از یه Worker رد بشه و هزینهی هر request رو بالا ببره؛ حذفش کرد و گفت اگه دوباره لازم شد، حتماً با یه فایل _routes.json مسیرها رو محدود میکنه.
Workers رو با fetch API مرورگر مقایسه میکنه: Request، Response، Headers همون چیزایین که تو مرورگر بلدی. نکتهای که یاد گرفته اینه که باید قبل از فرستادن جواب صبر کنه (await) تا کارای مهم شبکه تموم بشن، وگرنه Worker ممکنه قبل از تمومشدن کار متوقف بشه. برای دادههای ساده کلید-مقدار مثل دسترسی به دورهها از KV استفاده میکنه؛ ولی برای دادههای رابطهای تو یه پروژه دیگه سراغ D1 (دیتابیس SQLite مدیریتشدهی Cloudflare) میره.
برای فرمهای عمومی از Turnstile در برابر بات استفاده میکنه، ولی تأکید میکنه که فقط ویجت مرورگر کافی نیست و باید توکن رو حتماً سمت سرور هم چک کنی. فایلهای بزرگ مثل کتابها رو تو R2 نگه میداره، جدا از build سایت. برای پستهایی که زمان انتشارشون تو آیندهست، یه Worker زمانبندیشده داره که فقط دیپلوی جدید رو صدا میزنه. یه ابزار کوچیک هوش مصنوعی هم رو سایت داره که پشت Turnstile و یه سقف مصرف روزانه تو KV قایمه تا هزینهش کنترل بشه.
Queues، Durable Objects، Workflows، Vectorize و AI Gateway رو میشناسه و حتی دربارهشون نوشته، ولی تو هیچکدوم از پروژههاش لازمشون نداشته؛ میگه صرفاً کنار هم بودن تو داشبورد دلیل خوبی برای اضافهکردنشون نیست. قانونش سادهست: هر تصمیمی که بتونه یه سرور، یه cron job یا یه زیرساخت دستی رو حذف کنه، ارزششو داره؛ در غیر این صورت تو لیست باقی میمونه.
نکات کلیدی:
- سایت با Astro و Cloudflare Pages کاملاً استاتیک ساخته میشه و تنظیماتش تو wrangler.jsonc کنار کده.
- یه middleware ریشهای اشتباهی باعث شد هر request از یه Worker رد بشه؛ راهحل درست فایل _routes.jsonه.
- برای داده کلید-مقدار از KV و برای داده رابطهای از D1 استفاده میکنه.
- Turnstile فقط با چک سمت سرور واقعاً موثره، نه فقط ویجت مرورگر.
- Queues، Durable Objects، Workflows، Vectorize و AI Gateway رو میشناسه ولی هیچوقت واقعاً لازمشون نداشته.




