TGViewer
کدهالیک | codehalic کدهالیک | codehalic @codehalics · 4.15K subscribers
Post #705 841
سایت بالا بود و همه‌چیز ظاهراً درست کار می‌کرد. حتی لینک مستقیم عکس‌هایی که روی S3 بودند بدون مشکل باز می‌شدند و 200 برمی‌گشتند. اما کاور بعضی عکس‌ها در پروداکشن 500 می‌داد. وقتی DevTools را چک کردم، دیدم مرورگر به‌جای اینکه مستقیم عکس را از S3 بگیرد، دارد مسیر /_next/image را صدا می‌زند. همان‌جا مشخص شد مشکل از خود عکس یا S3 نیست، بلکه از Image Optimization در Next.js است. چون وقتی از کامپوننت Image استفاده می‌کنیم و optimization روشن باشد، Next.js عکس را از منبع می‌گیرد، resize و optimize می‌کند و بعد به مرورگر تحویل می‌دهد. این یعنی سرور کوچک من با 1 vCPU و 2GB RAM عملاً داشت نقش Image CDN را بازی می‌کرد. در محیط production، داخل Docker، با عکس‌های بزرگ PNG و سایزهایی مثل 3840، این پردازش گاهی به timeout یا خطای 500 می‌رسید. راه‌حل این بود که برای این شرایط، optimization را در Next.js خاموش کنم و images.unoptimized: true بگذارم تا مرورگر مستقیم عکس را از S3 بگیرد. خلاصه اگر لینک مستقیم S3 درست کار می‌کند اما /_next/image خطای 500 می‌دهد، احتمالاً مشکل از optimizer خود Next.js است، نه از فایل عکس یا S3.

نتیجه ساده است: اگر لینک مستقیم عکس درست کار می‌کند اما /_next/image خطای 500 می‌دهد، احتمالاً مشکل از S3 نیست؛ مشکل از این است که سرور Next.js توان پردازش و optimize کردن آن عکس را ندارد. برای سرورهای کوچک، image optimization واقعی باید روی CDN انجام شود، نه روی خود اپلیکیشن.

Hossein Molavi | The Engineering Mind

@codehalics | کدهالیک
  • 👍 12
More from @codehalics
  1. Oct 7, 2026این نکته رو هم اضافه کنم که این مورد داره ۲ اصل از اصول SOLID رو رعایت میکنه ! اول DIP (مع…
  2. Oct 7, 2026توی NestJS اینکه چند تا پوشه مثل Orders و Payments بسازی معنیش کد ماژولار نیست. وقتی همه چ…
  3. Oct 7, 2026توی نسخه جدید 16.4 نکس‌جی‌اس، مهم‌ترین خبر اینه که مدل جدید Cache Components بالاخره کامل…
  4. Oct 5, 2026یه اتفاق جالب افتاده: یه برنامه‌‌نویس موقع ساخت پروژه دات‌نت با Claude متوجه شده هوش مصنوع…
  5. Oct 5, 2026دوره جامع معماری نرم‌افزار منتشر شد. در این آموزش ۴ ساعته و فشرده، مباحث Clean Architectur…
  6. Oct 4, 2026این پروژه خیلی جالب بود یه نفر نرم افزار مدیریت انبار رو از یه کار خشک و تکراری به یه بازی…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →