اگر مثل من با Django REST Framework (DRF) کار میکنی و دنبال راهی برای سریعتر کردن APIهات هستی، حتماً باید drf-cache رو امتحان کنی.
این ابزار چیکار میکنه؟
با کش کردن درخواستهای API به شما کمک میکنه تا فشار روی دیتابیس کمتر بشه و سرعت پاسخدهی APIها بهطور چشمگیری افزایش پیدا کنه
میتونی کش کردن رو برای هر ویو یا کوئری بهطور جداگانه تنظیم کنی، این یعنی کنترل کامل روی نحوه ذخیرهسازی و بازیابی دادهها
فوقالعاده مفیده برای APIهای سنگین یا پرتقاضا که نیاز به بهینهسازی دارن
اگه میخوای کارایی APIهات رو بهبود بدی و لود سرورت رو کم کنی، drf-cache یکی از بهترین گزینههاست!
پ.ن: (اگه دادههای زیادی رو کش کنی، این میتونه حافظه سرور رو بیشتر مصرف کنه. بهخصوص اگر کوئریها یا درخواستها خیلی بزرگ و پیچیده باشن و برای APIهایی که باید به سرعت اطلاعات رو بهروزرسانی کنن (جایی که دادهها مرتباً تغییر میکنن)، استفاده از کش میتونه باعث بشه کاربران دادههای جدید رو دیرتر ببینن. در این مواقع، باید خیلی هوشمندانه کشینگ رو تنظیم کنی.
و همچنین استفاده از drf-cache نیاز به تنظیمات دقیق داره، و اگر بهدرستی تنظیم نشه، ممکنه اصلاً نتونی ازش بهینه استفاده کنی یا برعکس، عملکرد رو حتی بدتر کنی.)
https://github.com/chibisov/drf-extensions
@DevTwitter | <Shima Fallah/>
این ابزار چیکار میکنه؟
با کش کردن درخواستهای API به شما کمک میکنه تا فشار روی دیتابیس کمتر بشه و سرعت پاسخدهی APIها بهطور چشمگیری افزایش پیدا کنه
میتونی کش کردن رو برای هر ویو یا کوئری بهطور جداگانه تنظیم کنی، این یعنی کنترل کامل روی نحوه ذخیرهسازی و بازیابی دادهها
فوقالعاده مفیده برای APIهای سنگین یا پرتقاضا که نیاز به بهینهسازی دارن
اگه میخوای کارایی APIهات رو بهبود بدی و لود سرورت رو کم کنی، drf-cache یکی از بهترین گزینههاست!
پ.ن: (اگه دادههای زیادی رو کش کنی، این میتونه حافظه سرور رو بیشتر مصرف کنه. بهخصوص اگر کوئریها یا درخواستها خیلی بزرگ و پیچیده باشن و برای APIهایی که باید به سرعت اطلاعات رو بهروزرسانی کنن (جایی که دادهها مرتباً تغییر میکنن)، استفاده از کش میتونه باعث بشه کاربران دادههای جدید رو دیرتر ببینن. در این مواقع، باید خیلی هوشمندانه کشینگ رو تنظیم کنی.
و همچنین استفاده از drf-cache نیاز به تنظیمات دقیق داره، و اگر بهدرستی تنظیم نشه، ممکنه اصلاً نتونی ازش بهینه استفاده کنی یا برعکس، عملکرد رو حتی بدتر کنی.)
https://github.com/chibisov/drf-extensions
@DevTwitter | <Shima Fallah/>
👍20🔥6👎2🤣2
ترکیب وردپرس و لاراول Laravel خیلی جذابه واقعا.
اول از همه Corcel رو نصب میکنید و پروژه لاراول رو باهاش کانفیگ میکنید.
حالا وردپرس رو نصب میکنید و با پلاگین WordPress Pete ستش میکنید روی لاراول.
اینجوری یه سایت لاراولی دارید با بکاند وردپرس
@DevTwitter | <Pedram/>
اول از همه Corcel رو نصب میکنید و پروژه لاراول رو باهاش کانفیگ میکنید.
حالا وردپرس رو نصب میکنید و با پلاگین WordPress Pete ستش میکنید روی لاراول.
اینجوری یه سایت لاراولی دارید با بکاند وردپرس
@DevTwitter | <Pedram/>
🤣82👎16👍10🔥7
فرقی نداره تو چه حوزهای میخواین کار کنید؛ بکاند، فرانتاند، هوش مصنوعی یا هر چی که به ذهنتون میرسه، سایت roadmap.sh برای شماست.
مسیر یادگیری رو براتون مشخص میکنه و برای هر مرحله منابع خوب معرفی میکنه.برای افرادی که نمیدونن از کجا شروع کنن عالیه، از دستش ندید.
@DevTwitter | <Reza Jafari/>
مسیر یادگیری رو براتون مشخص میکنه و برای هر مرحله منابع خوب معرفی میکنه.برای افرادی که نمیدونن از کجا شروع کنن عالیه، از دستش ندید.
@DevTwitter | <Reza Jafari/>
👍76❤7👎4🔥3
#حاجی_پشمام
با وجود تمام فریمورک های خفن js و کلی لایبراری، هنوز jQuery توی 75 درصد وبسایتا هست
@DevTwitter
با وجود تمام فریمورک های خفن js و کلی لایبراری، هنوز jQuery توی 75 درصد وبسایتا هست
@DevTwitter
👍87🤣53👎12🔥4
یکی از مزایای استفاده از JWT (JSON Web Token) این است که برخلاف Sessionها، توکن در سرور ذخیره نمیشود و نیازی به نگهداری وضعیت کاربر در سمت سرور نیست. این موضوع باعث کاهش سربار سرور و افزایش مقیاسپذیری برنامه میشود.
اما یک چالش مهم در این روش وجود دارد: اگر نیاز باشد که دسترسی کاربر لغو یا توکن بلاک شود (به عنوان مثال پس از خروج کاربر)، توکن JWT تا زمان انقضای آن همچنان معتبر است و میتواند درخواستها را به سمت سرور ارسال کند.
برای رفع این مشکل، از Token Blacklisting یا همان فهرست سیاه توکنها استفاده میشود. در این رویکرد، توکنهایی که باید بلاک شوند در یک فهرست ذخیره میشوند (معمولاً در یک پایگاه داده سریع مانند Redis). هر زمان که توکنی به سرور ارسال میشود، ابتدا بررسی میشود که آیا در لیست سیاه قرار دارد یا خیر. اگر توکن در این لیست باشد، درخواست رد میشود حتی اگر هنوز مدت زمان اعتبار توکن به پایان نرسیده باشد.
این روش نه تنها امنیت بیشتری را فراهم میکند، بلکه مدیریت بهتری برای مواردی چون لغو دسترسی کاربران یا بروز تغییرات در حسابهای کاربری را امکانپذیر میسازد.
@DevTwitter | <Firoozeh Daeizadeh/>
اما یک چالش مهم در این روش وجود دارد: اگر نیاز باشد که دسترسی کاربر لغو یا توکن بلاک شود (به عنوان مثال پس از خروج کاربر)، توکن JWT تا زمان انقضای آن همچنان معتبر است و میتواند درخواستها را به سمت سرور ارسال کند.
برای رفع این مشکل، از Token Blacklisting یا همان فهرست سیاه توکنها استفاده میشود. در این رویکرد، توکنهایی که باید بلاک شوند در یک فهرست ذخیره میشوند (معمولاً در یک پایگاه داده سریع مانند Redis). هر زمان که توکنی به سرور ارسال میشود، ابتدا بررسی میشود که آیا در لیست سیاه قرار دارد یا خیر. اگر توکن در این لیست باشد، درخواست رد میشود حتی اگر هنوز مدت زمان اعتبار توکن به پایان نرسیده باشد.
این روش نه تنها امنیت بیشتری را فراهم میکند، بلکه مدیریت بهتری برای مواردی چون لغو دسترسی کاربران یا بروز تغییرات در حسابهای کاربری را امکانپذیر میسازد.
@DevTwitter | <Firoozeh Daeizadeh/>
👍80❤6👎5
لاراول بلدی ولی لایووایر نه؟ میخوای شروع کنی ولی نمیدونی کدوم دوره خوبه؟
جرمی مک پیک (Jeremy McPeak) دوست داشتنی یه کورس آموزش لایووایر گذاشته که اگه نبینی، بعدا خعلی پشیمون میشی!
Today, we're launching a complete refresh of our introductory Livewire course.
"Livewire 3 From Scratch"
- 4 Hours of Content
- 29 Episodes
- 100% Free to All
- Ready to watch right now!
https://laracasts.com/series/livewire-3-from-scratch
@DevTwitter | <Ali Salehi/>
جرمی مک پیک (Jeremy McPeak) دوست داشتنی یه کورس آموزش لایووایر گذاشته که اگه نبینی، بعدا خعلی پشیمون میشی!
Today, we're launching a complete refresh of our introductory Livewire course.
"Livewire 3 From Scratch"
- 4 Hours of Content
- 29 Episodes
- 100% Free to All
- Ready to watch right now!
https://laracasts.com/series/livewire-3-from-scratch
@DevTwitter | <Ali Salehi/>
👍29🤣9❤1
خودمون رو به چالش کشیدیم و گفتیم وقتشه که CI/CD رو به بهترین شکل ممکن پیاده کنیم! نتیجهاش یک راهکار جامع و ساده برای راهاندازی Jenkins و GitLab شد که فرآیندهای استقرار رو کاملاً خودکار میکنه. از Docker و Rsync گرفته تا SSH، همه مراحل رو مستند کردیم تا هرکسی بتونه با کمترین دردسر، همین سیستم رو اجرا کنه.
این داکیومنت رو روی گیت هابمون گذاشتیم تا هر کسی که دنبال یک راهحل سریع و کارآمد برای اتوماسیون توسعه و استقرار هست، بتونه ازش استفاده کنه. حتماً یه نگاهی بندازید!
https://github.com/aligharaei/jenkins_cicd
@DevTwitter | <ali gharaei/>
این داکیومنت رو روی گیت هابمون گذاشتیم تا هر کسی که دنبال یک راهحل سریع و کارآمد برای اتوماسیون توسعه و استقرار هست، بتونه ازش استفاده کنه. حتماً یه نگاهی بندازید!
https://github.com/aligharaei/jenkins_cicd
@DevTwitter | <ali gharaei/>
🔥38👍5🤣2👎1
میخوایی بدونی پس قضیه جاواسکریپت چی میگذره و توی مصاحبه ها هم ازش استفاده کنی ؟
من یه مجموعه مقالاتی به اسم اندراحوالات جاواسکریپت توی سایت ویرگول نوشتم که جواب سوال بالا رو بهت میده:
تا جایی که تونستم هر موضوعی رو به ساده ترین نوع ممکن توضیح و پوشش دادم
اندر احوالات جاوااسکریپت قسمت اول
در مورد نحوه کار js و javanoscript Engine
https://vrgl.ir/fH7sf
اندر احوالات جاوااسکریپت قسمت دوم
در مورد Execution Context, Call Stack و زیر و بم اش
https://vrgl.ir/REWoF
اندر احوالات جاوااسکریپت قسمت سوم
هر آنچه که باید درمورد Scope و مخلفاتش بدونی
https://vrgl.ir/Zr7QI
اندر احوالات جاوااسکریپت قسمت چهارم
در مورد Hoisting
https://vrgl.ir/A3CVT
اندر احوالات جاوااسکریپت قسمت پنجم (آخر)
در مورد مفهوم this و کاربردش، arrow function و bind
https://vrgl.ir/JpJXp
نبرد async و sync
در مورد مفهوم asynchronous و synchronous - میکروتسک چیه؟نحوه کار کرد؟
https://vrgl.ir/96eJP
@DevTwitter | <Mohammad Bohluli/>
من یه مجموعه مقالاتی به اسم اندراحوالات جاواسکریپت توی سایت ویرگول نوشتم که جواب سوال بالا رو بهت میده:
تا جایی که تونستم هر موضوعی رو به ساده ترین نوع ممکن توضیح و پوشش دادم
اندر احوالات جاوااسکریپت قسمت اول
در مورد نحوه کار js و javanoscript Engine
https://vrgl.ir/fH7sf
اندر احوالات جاوااسکریپت قسمت دوم
در مورد Execution Context, Call Stack و زیر و بم اش
https://vrgl.ir/REWoF
اندر احوالات جاوااسکریپت قسمت سوم
هر آنچه که باید درمورد Scope و مخلفاتش بدونی
https://vrgl.ir/Zr7QI
اندر احوالات جاوااسکریپت قسمت چهارم
در مورد Hoisting
https://vrgl.ir/A3CVT
اندر احوالات جاوااسکریپت قسمت پنجم (آخر)
در مورد مفهوم this و کاربردش، arrow function و bind
https://vrgl.ir/JpJXp
نبرد async و sync
در مورد مفهوم asynchronous و synchronous - میکروتسک چیه؟نحوه کار کرد؟
https://vrgl.ir/96eJP
@DevTwitter | <Mohammad Bohluli/>
👍35🤣10🔥9❤1
یک کد اتاق چت کامل به صورت real time با Node.js، Next.js و Socket.io نوشتهام که برای دوستانی که علاقهمند به نوشتن اتاق چت هست نمونهی خوبیه.
میتوانید برای دیدن کد به آدرس گیتهابم که در پایین گذاشتم مراجعه کنید.
https://github.com/mo3ito/chat-room
@DevTwitter | <Mostafa Entezami/>
میتوانید برای دیدن کد به آدرس گیتهابم که در پایین گذاشتم مراجعه کنید.
https://github.com/mo3ito/chat-room
@DevTwitter | <Mostafa Entezami/>
👍32🤣10❤4🔥4
«هوش مصنوعی هِزار: کتابخانهای برای آسانسازی یادگیری هوش مصنوعی در زبان فارسی، ساخته شده توسط جامعه فارسی زبان!»
این مجموعه ابزار، کار با عکس، متن و صدا را به زبان فارسی تسهیل میکند.
شخصا برای آموزش OCR فارسی تصاویر،ازش استفاده کردم.
https://github.com/hezarai/hezar
@DevTwitter | <Mohammad/>
این مجموعه ابزار، کار با عکس، متن و صدا را به زبان فارسی تسهیل میکند.
شخصا برای آموزش OCR فارسی تصاویر،ازش استفاده کردم.
https://github.com/hezarai/hezar
@DevTwitter | <Mohammad/>
👍45❤4👎1
(بررسی بهینگی روش آپلود تصاویر شما در بک اند)
خب نوبتی هم باشه نوبت یه گپ کوتاه و فلسفی درباره نحوه مدیریت یکی از پر استفاده ترین مباحث در برنامه نویسی بک انده (آپلود تصاویر)
از اونجایی که من خیلی وسواسی و کمال گرام، همیشه دنبال پرفورمنس و بهینه بودن در پیاده سازی هام هستم. اوایل خیلی واسم سوال بود که روش آپلود، پوشه بندی و مدیریت کردن تصاویری که آپلود میکنیم باید چطور باشه. بذارید خلاصه بگم:
فرض کنید برای یک مدل (مثلا Post) شما 5 تا تصویر آپلود کردید که هنگامی که Post رو Delete میکنید، میتونید به images مرتبط با اون Post دسترسی داشته باشید و هنگام این عملیات، تصاویرش رو هم با خودش از روی سرور حذف کنید، تا اینجای کار همه چیز اوکیه.
حالا چالش: فرض کنید تصاویر ما قبل از اجرا شدن عملیات Create اون پست و به صورت Ajax آپلود بشن (با ابزاری شبیه به Dropzonejs) در این صورت قبل از ایجاد شدن رکورد مرتبط با Post، ما ممکنه چند ده تصویر آپلود کرده باشیم.
حالا فرض کنید توی همین فرصت به هر دلیلی اون رکورد ایجاد نشه. حالا ممکنه فرد درج کننده بیخیال این قضیه بشه، مرورگر بسته بشه، برق بره یا هرچی....
این وسط تکلیف تصاویر آپلودی چی میشن؟ در طولانی مدت وقتی ده ها بار این اتفاق بیوفته چی میشه؟
توضیح راه حل:
بهتره در اون دایرکتوری ای که آپلود و ذخیره سازی تصاویر رو انجام میدیم، یه پوشه ای با نام temp داشته باشیم که تصاویر در ابتدا و به صورت موقت اونجا ذخیره میشن:
/images/uploads/articles/temp
و بعد از عملیات create شدن، فانکشن و سرویسی بنویسیم که عملیات Move کردن این تصاویر رو از اون پوشه temp به مسیر اصلی رو انجام بده:
/images/uploads/articles/2024/10/06/image1.jpg
/images/uploads/articles/2024/10/06/image2.jpg
...
با این روش میتونید از آپلود و تکرار تصاویر هرز و بی استفاده و استفاده شدن بیخودی از منابع ذخیره سازی سرور جلوگیری کنید و اون پوشه temp رو به صورت schedule یا حتی دستی هر از گاهی حذف کنید و هم در دنیا و هم در آخرت عاقبت بخیر بشید
@DevTwitter | <Keyvan Lotfi Kamran/>
خب نوبتی هم باشه نوبت یه گپ کوتاه و فلسفی درباره نحوه مدیریت یکی از پر استفاده ترین مباحث در برنامه نویسی بک انده (آپلود تصاویر)
از اونجایی که من خیلی وسواسی و کمال گرام، همیشه دنبال پرفورمنس و بهینه بودن در پیاده سازی هام هستم. اوایل خیلی واسم سوال بود که روش آپلود، پوشه بندی و مدیریت کردن تصاویری که آپلود میکنیم باید چطور باشه. بذارید خلاصه بگم:
فرض کنید برای یک مدل (مثلا Post) شما 5 تا تصویر آپلود کردید که هنگامی که Post رو Delete میکنید، میتونید به images مرتبط با اون Post دسترسی داشته باشید و هنگام این عملیات، تصاویرش رو هم با خودش از روی سرور حذف کنید، تا اینجای کار همه چیز اوکیه.
حالا چالش: فرض کنید تصاویر ما قبل از اجرا شدن عملیات Create اون پست و به صورت Ajax آپلود بشن (با ابزاری شبیه به Dropzonejs) در این صورت قبل از ایجاد شدن رکورد مرتبط با Post، ما ممکنه چند ده تصویر آپلود کرده باشیم.
حالا فرض کنید توی همین فرصت به هر دلیلی اون رکورد ایجاد نشه. حالا ممکنه فرد درج کننده بیخیال این قضیه بشه، مرورگر بسته بشه، برق بره یا هرچی....
این وسط تکلیف تصاویر آپلودی چی میشن؟ در طولانی مدت وقتی ده ها بار این اتفاق بیوفته چی میشه؟
توضیح راه حل:
بهتره در اون دایرکتوری ای که آپلود و ذخیره سازی تصاویر رو انجام میدیم، یه پوشه ای با نام temp داشته باشیم که تصاویر در ابتدا و به صورت موقت اونجا ذخیره میشن:
/images/uploads/articles/temp
و بعد از عملیات create شدن، فانکشن و سرویسی بنویسیم که عملیات Move کردن این تصاویر رو از اون پوشه temp به مسیر اصلی رو انجام بده:
/images/uploads/articles/2024/10/06/image1.jpg
/images/uploads/articles/2024/10/06/image2.jpg
...
با این روش میتونید از آپلود و تکرار تصاویر هرز و بی استفاده و استفاده شدن بیخودی از منابع ذخیره سازی سرور جلوگیری کنید و اون پوشه temp رو به صورت schedule یا حتی دستی هر از گاهی حذف کنید و هم در دنیا و هم در آخرت عاقبت بخیر بشید
@DevTwitter | <Keyvan Lotfi Kamran/>
👍70🤣4❤3👎3
This media is not supported in your browser
VIEW IN TELEGRAM
چیزی که زمان یادگیری Git کمبودش رو به شدت حس میکردم ابزاری بود که بتونه دستورات Git رو تصویرسازی کنه.
یادگیری Git تنها با مطالعه داکیومنت و مقالههای مختلف میتونه چالشبرانگیز باشه. چیزی که میتونه روند یادگیری این ابزار رو سریعتر و البته لذتبخشتر کنه تصویرسازی و انیمیشنه؛ چه بهتر که این تصویرسازیها زنده و در لحظه باشن.
دو تا ابزاری که خودم برای فهم بهتر دستورات Git ازشون استفاده کردم LearnGitBranching و Visualizing Git هستن.
با استفاده از این دو ابزار میتونید خیلی از دستورات گیت رو امتحان کنید و تاثیرشون رو در لحظه ببینید. فکر میکنم حتی اگر روزانه از git استفاده میکنید و با دستوراتش آشنایی کامل دارید، باز هم استفاده از این دو ابزار میتونه درکتون از git رو بیشتر و بهتر کنه.
شما از چه ابزارها و منابعی برای یادگیری git استفاده میکنین؟
LearnGitBranching:
https://learngitbranching.js.org/
Visualizing Git:
https://git-school.github.io/visualizing-git/
@DevTwitter | <Fateme Fouladkar/>
یادگیری Git تنها با مطالعه داکیومنت و مقالههای مختلف میتونه چالشبرانگیز باشه. چیزی که میتونه روند یادگیری این ابزار رو سریعتر و البته لذتبخشتر کنه تصویرسازی و انیمیشنه؛ چه بهتر که این تصویرسازیها زنده و در لحظه باشن.
دو تا ابزاری که خودم برای فهم بهتر دستورات Git ازشون استفاده کردم LearnGitBranching و Visualizing Git هستن.
با استفاده از این دو ابزار میتونید خیلی از دستورات گیت رو امتحان کنید و تاثیرشون رو در لحظه ببینید. فکر میکنم حتی اگر روزانه از git استفاده میکنید و با دستوراتش آشنایی کامل دارید، باز هم استفاده از این دو ابزار میتونه درکتون از git رو بیشتر و بهتر کنه.
شما از چه ابزارها و منابعی برای یادگیری git استفاده میکنین؟
LearnGitBranching:
https://learngitbranching.js.org/
Visualizing Git:
https://git-school.github.io/visualizing-git/
@DevTwitter | <Fateme Fouladkar/>
👍53❤6👎6
This media is not supported in your browser
VIEW IN TELEGRAM
این ریپو یک ابزار هست که میتونید به صورت لوکال صفحه مانیتورتون و صدا را ۲۴ ساعته ضبط کنید و بعد راجع به هرچیزی که گفتید و شنیدید و دیدید سوال بپرسید. یک جور ورژن اپن سورس rewind .ai هست.
https://github.com/mediar-ai/screenpipe
@DevTwitter | <Mehdi Allahyari/>
https://github.com/mediar-ai/screenpipe
@DevTwitter | <Mehdi Allahyari/>
🔥44👍9👎3🤣1
رندرینگ در Next.js
در دنیای توسعه وب، یکی از دلایل محبوبیت Next.js نحوه مدیریت فرآیندهای رندرینگ است. این
فریمورک انعطافپذیری زیادی در ارائه انواع مختلف رندرینگ برای بهینهسازی عملکرد و تجربه کاربری فراهم میکند. در ادامه به انواع رندرینگ در Next.js میپردازیم:
رندرینگ سمت سرور (SSR) - Server Side Rendering:
در این روش، صفحه وب در سمت سرور رندر شده و به صورت HTML کامل به مرورگر کاربر ارسال میشود. این نوع رندرینگ برای سئو (SEO) و دسترسی سریع به محتوای اولیه بسیار موثر است.
رندرینگ سمت کاربر - کلاینت (CSR) - Client Side Rendering:
در CSR، صفحه ابتدا به صورت یک فایل HTML خالی ارسال میشود و جاوا اسکریپت در مرورگر بارگذاری شده و محتوای پویا را ایجاد میکند. این نوع رندرینگ برای اپلیکیشنهای تکصفحهای (SPA) که تعاملات زیادی دارند، مناسب است.
رندرینگ استاتیک (SSG) - Static Site Generation:
در این روش، صفحات به صورت استاتیک و در زمان ساخت (build time) تولید میشوند و به کاربران ارائه میگردند. این نوع رندرینگ بسیار سریع و مناسب برای محتوای ثابت است.
رندرینگ هیبریدی (ISR) - Incremental Static Regeneration:
ترکیبی از رندرینگ استاتیک و دینامیک است که به شما اجازه میدهد صفحاتی را به صورت استاتیک ایجاد کنید و بعداً بدون نیاز به بازسازی کل سایت، آنها را بهروزرسانی کنید. این روش برای بهبود عملکرد در سایتهای پویا مفید است.
Next.js با پشتیبانی از این انواع مختلف رندرینگ، انعطاف و سرعت بالایی برای ایجاد اپلیکیشنهای وب پیشرفته فراهم میکند.
@DevTwitter | <Mohsen Abbasi/>
در دنیای توسعه وب، یکی از دلایل محبوبیت Next.js نحوه مدیریت فرآیندهای رندرینگ است. این
فریمورک انعطافپذیری زیادی در ارائه انواع مختلف رندرینگ برای بهینهسازی عملکرد و تجربه کاربری فراهم میکند. در ادامه به انواع رندرینگ در Next.js میپردازیم:
رندرینگ سمت سرور (SSR) - Server Side Rendering:
در این روش، صفحه وب در سمت سرور رندر شده و به صورت HTML کامل به مرورگر کاربر ارسال میشود. این نوع رندرینگ برای سئو (SEO) و دسترسی سریع به محتوای اولیه بسیار موثر است.
رندرینگ سمت کاربر - کلاینت (CSR) - Client Side Rendering:
در CSR، صفحه ابتدا به صورت یک فایل HTML خالی ارسال میشود و جاوا اسکریپت در مرورگر بارگذاری شده و محتوای پویا را ایجاد میکند. این نوع رندرینگ برای اپلیکیشنهای تکصفحهای (SPA) که تعاملات زیادی دارند، مناسب است.
رندرینگ استاتیک (SSG) - Static Site Generation:
در این روش، صفحات به صورت استاتیک و در زمان ساخت (build time) تولید میشوند و به کاربران ارائه میگردند. این نوع رندرینگ بسیار سریع و مناسب برای محتوای ثابت است.
رندرینگ هیبریدی (ISR) - Incremental Static Regeneration:
ترکیبی از رندرینگ استاتیک و دینامیک است که به شما اجازه میدهد صفحاتی را به صورت استاتیک ایجاد کنید و بعداً بدون نیاز به بازسازی کل سایت، آنها را بهروزرسانی کنید. این روش برای بهبود عملکرد در سایتهای پویا مفید است.
Next.js با پشتیبانی از این انواع مختلف رندرینگ، انعطاف و سرعت بالایی برای ایجاد اپلیکیشنهای وب پیشرفته فراهم میکند.
@DevTwitter | <Mohsen Abbasi/>
👍39🔥4
الگوهای ماکروسرویس که هر مهندس نرمافزار باید بدونه. این الگوها کمک میکنن سیستمهای نرمافزاری مقاوم در برابر خطا و قابل نگهداری طراحی کنید
https://blog.amigoscode.com/p/mircroservices-best-practices
@DevTwitter | <Mohammad Roshandelpoor/>
https://blog.amigoscode.com/p/mircroservices-best-practices
@DevTwitter | <Mohammad Roshandelpoor/>
🔥14👍7👎1
ذات فرانتاند به طرز وحشتناکی پیچیدهست. اینو زمانی متوجه میشید که بخواید یه تیکه از کد یه باندلر مثل ESbuild یا Rollup رو بخونید. یا بخواید درباره الگوریتمهای Virtual DOM توی مثلا ریکت یا Vue بخونید. فکر میکنید سادهاس چون فقط یه تیکه از رنگ دادن به دکمه رو توی فرانت دیدید.
@DevTwitter | <Yasha/>
@DevTwitter | <Yasha/>
👍149🤣44👎12🔥7