در لاراول وقتی نیاز به پردازش دیتای سنگین داریم میتونیم از lazy collection استفاده کنیم.
با استفاده از lazy collection درواقع دیتاها فقط زمانی که بهشون نیاز باشه لود میشن، پس بدلیل لود تدریجی سرعت بارگزاری بهتر میشه!
این یعنی برخلاف Collection معمولی که همهی دیتاها رو یکجا لود میکنه.
#Laravel
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/thelarrybarker/status/1855281331770429474?t=W8HppF5MAi6ewngacubEXw&s=35
با استفاده از lazy collection درواقع دیتاها فقط زمانی که بهشون نیاز باشه لود میشن، پس بدلیل لود تدریجی سرعت بارگزاری بهتر میشه!
این یعنی برخلاف Collection معمولی که همهی دیتاها رو یکجا لود میکنه.
#Laravel
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/thelarrybarker/status/1855281331770429474?t=W8HppF5MAi6ewngacubEXw&s=35
👍7
در لاراول، اگه بخوایم که یک route رو تنها برای متودهای خاص HTTP مثل GET یا POST محدود کنیم از کدوم متود باید استفاده کنیم؟
Final Results
49%
only()
8%
restrict()
30%
methods()
12%
except()
❤5👍2
Forwarded from laravel-news
✍️ 4 استاندارد رایج نامگذاری در برنامهنویسی (Laravel Edition) 🖋
در لاراول، استاندارد نامگذاری نقش مهمی در خوانایی و یکپارچگی کدها دارد. بیایید نگاهی به استانداردهای رایج بیندازیم:
اولی => Camel Case
🔹 فرمت: camelCase
🔹 استفاده در: متغیرها و متدها
🔹 مثال: $userProfile, getUserData()
دومی => Snake Case
🔹 فرمت: snake_case
🔹 استفاده در: نام ستونها و جداول پایگاه داده
🔹 مثال: user_id, created_at
سومی => Kebab Case
🔹 فرمت: kebab-case
🔹 استفاده در: نام routeها یا فایلهای CSS و JS
🔹 مثال: user-profile, job-application.js
چهارمی => Pascal Case
🔹 فرمت: PascalCase
🔹 استفاده در: نام کلاسها
🔹 مثال: UserController, JobApplication
🎯 چرا استاندارد نامگذاری مهم است؟
خوانایی بالاتر
نگهداری آسانتر
کاهش احتمال خطا
در لاراول، استاندارد نامگذاری نقش مهمی در خوانایی و یکپارچگی کدها دارد. بیایید نگاهی به استانداردهای رایج بیندازیم:
اولی => Camel Case
🔹 فرمت: camelCase
🔹 استفاده در: متغیرها و متدها
🔹 مثال: $userProfile, getUserData()
دومی => Snake Case
🔹 فرمت: snake_case
🔹 استفاده در: نام ستونها و جداول پایگاه داده
🔹 مثال: user_id, created_at
سومی => Kebab Case
🔹 فرمت: kebab-case
🔹 استفاده در: نام routeها یا فایلهای CSS و JS
🔹 مثال: user-profile, job-application.js
چهارمی => Pascal Case
🔹 فرمت: PascalCase
🔹 استفاده در: نام کلاسها
🔹 مثال: UserController, JobApplication
🎯 چرا استاندارد نامگذاری مهم است؟
خوانایی بالاتر
نگهداری آسانتر
کاهش احتمال خطا
❤8👍4
در لاراول گاهی اوقات نیازه که یک storage disk بطور موقت و در حالت (runtime) بسازیم، مثلاً برای فایلهای temp یا تست.
این کار بدون نیاز به اعمال تغییرات در فایل config/filesystems.php بصورت زیر و به راحتی قابل انجامه
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1863686467442065495?s=35
این کار بدون نیاز به اعمال تغییرات در فایل config/filesystems.php بصورت زیر و به راحتی قابل انجامه
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1863686467442065495?s=35
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: On-Demand Storage Disks
Have you ever needed to quickly create a disk, whether for tests or temporary files, but had to define it in the filesystem configuration? Well, Laravel ships with on-demand disks so that you can define disks at runtime…
Have you ever needed to quickly create a disk, whether for tests or temporary files, but had to define it in the filesystem configuration? Well, Laravel ships with on-demand disks so that you can define disks at runtime…
❤7🔥2
روشی برای به دست آوردن عرض scrollbar بدون استفاده از جاوااسکریپت که احتمالا به کارتون بیاد:
میتونیم عرض scrollbar رو به پیکسل در یک متغیر CSS ذخیره کنیم و ازش در هر قسمته دیگه از کد استفاده کنیم. همچنین میتونیم این مقدار رو بدون واحد و فقط مقدار عددیش رو بدستش بیاریم و نمایش بدیم. این روش باعث میشه کدمون سادهتر و برای تغییر راحتتر باشه.
#UI
#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/ChallengesCss/status/1857031287682334869?s=19
میتونیم عرض scrollbar رو به پیکسل در یک متغیر CSS ذخیره کنیم و ازش در هر قسمته دیگه از کد استفاده کنیم. همچنین میتونیم این مقدار رو بدون واحد و فقط مقدار عددیش رو بدستش بیاریم و نمایش بدیم. این روش باعث میشه کدمون سادهتر و برای تغییر راحتتر باشه.
#UI
#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/ChallengesCss/status/1857031287682334869?s=19
X (formerly Twitter)
CSS by T. Afif (@ChallengesCss) on X
💡 CSS Tip!
Do you want to know the scrollbar width? It's possible using only CSS and a few lines of code! You can get the pixel value within a CSS variable and use it everywhere.
As a bonus, you can also have the unitless value and show it!
Do you want to know the scrollbar width? It's possible using only CSS and a few lines of code! You can get the pixel value within a CSS variable and use it everywhere.
As a bonus, you can also have the unitless value and show it!
👍3❤1
یه چیت شیت خوب واسه sql و css
خلاصه که عشق کنید😁
توو منبع اصلیش(لینک اخر) چیت شیتای بیشتری گذاشته، پیشنهاد میکنم بررسی کنین
#css
#sql
@GoldenCodeir
(منبع👇🏾)
https://x.com/swapnakpanda/status/1867820437310218716?s=19
خلاصه که عشق کنید😁
توو منبع اصلیش(لینک اخر) چیت شیتای بیشتری گذاشته، پیشنهاد میکنم بررسی کنین
#css
#sql
@GoldenCodeir
(منبع👇🏾)
https://x.com/swapnakpanda/status/1867820437310218716?s=19
🔥4
در لاراول با دستور زیر میتونیم خیلی راحت فایلهای مورد نیاز برای یک مدل مدنظر رو ایجاد کنیم :
با اجرای دستور بالا فایل هایی از جمله TaskFactory, tasks_table, TaskSeeder, StoreTaskRequest, TaskController, TaskPolicy برامون ساخته میشه :)
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین 👇🏾)
https://x.com/PovilasKorop/status/1868970650922086770?t=JgpOlyrGMx9Z1ZNuwUVLhg&s=35
php artisan make:model Task -a
با اجرای دستور بالا فایل هایی از جمله TaskFactory, tasks_table, TaskSeeder, StoreTaskRequest, TaskController, TaskPolicy برامون ساخته میشه :)
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین 👇🏾)
https://x.com/PovilasKorop/status/1868970650922086770?t=JgpOlyrGMx9Z1ZNuwUVLhg&s=35
👍7👏3
قابلیت where() در CSS به ما این امکان رو داده که استایل یکسانی رو به چندین عنصر مختلف بتونیم اعمال کنیم، بدون این که بخوایم برای هر کدومشون استایل مجزا بنویسیم.
برای این کار میتونیم نام selector ها رو داخل پرانتز قرار بدیم و اونارو با کاما از هم جدا کنیم. این کار باعث میشه کدهای CSS ما کوتاهتر، مرتبتر و خواناتر بشه.
#CSS
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/DevKhan03/status/1868564057306919234?t=PFsXj5Xnqgrsy_NlxBJ6bw&s=35
برای این کار میتونیم نام selector ها رو داخل پرانتز قرار بدیم و اونارو با کاما از هم جدا کنیم. این کار باعث میشه کدهای CSS ما کوتاهتر، مرتبتر و خواناتر بشه.
.item :where(h1, h2, p) {
color: red;
}#CSS
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/DevKhan03/status/1868564057306919234?t=PFsXj5Xnqgrsy_NlxBJ6bw&s=35
X (formerly Twitter)
Khan Nasir (@DevKhan03) on X
CSS Tip! 💡
The CSS :where() pseudo-class is used to apply the same style to all elements within the parentheses at once.
The :where() pseudo-class requires a list of selectors separated by commas as its argument.
The CSS :where() pseudo-class is used to apply the same style to all elements within the parentheses at once.
The :where() pseudo-class requires a list of selectors separated by commas as its argument.
👍4🆒1
Forwarded from Web Application Security
آسیب پذیری CRLF injection =
اگه هکر به عنوان user input به وب اپلیکیشن کاراکترهای CRLF یا همون
%0d%0a
رو تزریق کنه و وب اپلیکیشن رو تحت تاثیر قرار بده آسیب پذیری به وجود میاد.
❓به صورت کلی CRLF چیه؟ همون کلید Enterخودمون.
❓چه زمانی آسیب پذیری به وجود میاد؟ وقتی که ورودی کاربر به صورت ناامن در یک response Header قرار بگیرد.
پیش نیازها:
1⃣ سواستفاده از CRLF برای bypass کردن:
اگه تو حملات injection نیاز به bypass داشتیم میتونیم از CRLF استفاده کنیم. برای مثال در command injection میتونیم از 0a% به عنوان یک command separator استفاده کنیم وقتی که سایر command separator هایی مثل | در blacklist قرار دارند.
و یا در XSS وقتی نیاز به بستن تگ داریم برای اکسپلویت و اجازه نداریم تگ رو ببندیم، از CRLF برای bypass استفاده میکنیم.
</noscript> ❌
</noscript%0a> ✅
2⃣ اکسپلویت سایر آسیب پذیری ها:
وقتی آسیب پذیری تو header ها وجود داره، برای اکسپلویت باید از CRLF injection کمک بگیریم در غیر این صورت آسیب پذیری self هست.
برای مثال اگه مقدار هدر X-Forwarded-For تو صفحه reflect میشه و XSS میخوره، واسه اکسپلویت آسیب پذیری باید با یک CRLF injection ترکیب بشه(راه های دیگه ای هم برای اکسپلویت این نوع XSS وجود داره مثل cache poisoning)
3⃣ به وجود آوردن آسیب پذیری های مختلف:
اگه ورودی کاربر در Response Header ها قرار بگیره، میتونیم response در دستکاری کنیم و به آسیب پذیری های مختلفی برسیم. فرض کنین که ورودی کاربر در قالب پارامتر username در cookie قرار میگیرد، ما میتونیم با دوتا CRLF زدن، Body رو کنترل کنیم و پیلود XSS خودمون رو قرار بدیم:
نکته آخر:
ممکنه بتونیم با این آسیب پذیری response هدر های امنیتی رو غیر فعال یا بازنویسی کنیم در مرورگر قربانی.
#CRLF_injection
اگه هکر به عنوان user input به وب اپلیکیشن کاراکترهای CRLF یا همون
%0d%0a
رو تزریق کنه و وب اپلیکیشن رو تحت تاثیر قرار بده آسیب پذیری به وجود میاد.
❓به صورت کلی CRLF چیه؟ همون کلید Enterخودمون.
❓چه زمانی آسیب پذیری به وجود میاد؟ وقتی که ورودی کاربر به صورت ناامن در یک response Header قرار بگیرد.
پیش نیازها:
1. هر Header با Header بعدی با یک CRLF جدا میشود.کاربردها:
2. آخرین Header با Body با دو CRLF جدا میشود.
1. سواستفاده از CRLF برای bypass کردن.
2. اکسپلویت سایر آسیب پذیری ها.
3. به وجود آوردن آسیب پذیری های مختلف.
1⃣ سواستفاده از CRLF برای bypass کردن:
اگه تو حملات injection نیاز به bypass داشتیم میتونیم از CRLF استفاده کنیم. برای مثال در command injection میتونیم از 0a% به عنوان یک command separator استفاده کنیم وقتی که سایر command separator هایی مثل | در blacklist قرار دارند.
و یا در XSS وقتی نیاز به بستن تگ داریم برای اکسپلویت و اجازه نداریم تگ رو ببندیم، از CRLF برای bypass استفاده میکنیم.
</noscript> ❌
</noscript%0a> ✅
2⃣ اکسپلویت سایر آسیب پذیری ها:
وقتی آسیب پذیری تو header ها وجود داره، برای اکسپلویت باید از CRLF injection کمک بگیریم در غیر این صورت آسیب پذیری self هست.
برای مثال اگه مقدار هدر X-Forwarded-For تو صفحه reflect میشه و XSS میخوره، واسه اکسپلویت آسیب پذیری باید با یک CRLF injection ترکیب بشه(راه های دیگه ای هم برای اکسپلویت این نوع XSS وجود داره مثل cache poisoning)
3⃣ به وجود آوردن آسیب پذیری های مختلف:
اگه ورودی کاربر در Response Header ها قرار بگیره، میتونیم response در دستکاری کنیم و به آسیب پذیری های مختلفی برسیم. فرض کنین که ورودی کاربر در قالب پارامتر username در cookie قرار میگیرد، ما میتونیم با دوتا CRLF زدن، Body رو کنترل کنیم و پیلود XSS خودمون رو قرار بدیم:
app.php?username=salam%0d%0a%0d%0a<img src=x onerror=alert()>
نکته آخر:
ممکنه بتونیم با این آسیب پذیری response هدر های امنیتی رو غیر فعال یا بازنویسی کنیم در مرورگر قربانی.
#CRLF_injection
👍3🙏2🤯1
در لاراول وقتی که دادهها از طریق فرمها اعتبارسنجی میشن ممکنه بعضی ازونا فقط برای بررسی باشند و نیازی به ذخیرهسازیشون در دیتابیس نداشته باشیم.
مثلا؟
وقتی یک فیلد مثل password_confirmation که فقط برای بررسی صحت پسورد قراره استفاده بشه و در نهایت نیازی به ذخیره ی اون نداریم میتونیم براش از exclude استفاده کنیم. اینجوری فقط دیتای مورد نیاز به دیتابیس ارسال میشه.
#Laravel
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/_newtonjob/status/1863869299569426803?t=3EjqobGwiK4Wm5Tdiq7jfQ&s=35
مثلا؟
وقتی یک فیلد مثل password_confirmation که فقط برای بررسی صحت پسورد قراره استفاده بشه و در نهایت نیازی به ذخیره ی اون نداریم میتونیم براش از exclude استفاده کنیم. اینجوری فقط دیتای مورد نیاز به دیتابیس ارسال میشه.
#Laravel
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/_newtonjob/status/1863869299569426803?t=3EjqobGwiK4Wm5Tdiq7jfQ&s=35
👍4❤3💯1
ظاهر فرم ها بطور پیشفرض سادست ولی یه سری مواقع نیازه کاستوم بشن. یک قابلیتی که css ارائه داده و خیلی مفیده accent-color هستش.
با این قابلیت میشه حتی اجزای فرم مثل check box یا radio button ها رو هم به زیبایی کاستومشون کرد بصورت دیفالت تا با ظاهر سایت هماهنگ تر بشن👌🏾
#Css
#UI
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/csaba_kissi/status/1695692651188916575?t=QCxTPRVdbovbQJ-9Z8PD7w&s=35
با این قابلیت میشه حتی اجزای فرم مثل check box یا radio button ها رو هم به زیبایی کاستومشون کرد بصورت دیفالت تا با ظاهر سایت هماهنگ تر بشن👌🏾
#Css
#UI
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/csaba_kissi/status/1695692651188916575?t=QCxTPRVdbovbQJ-9Z8PD7w&s=35
🔥5👍1
با استفاده از Fallback Routes در لاراول میتونیم مسیرهایی که وجود ندارن (مثل آدرسهای اشتباه) رو به خوبی مدیریت کنیم.
یعنی بجای نمایش صفحه خطای دیفالته لاراول، یک صفحهی 404 کاستومایز شده و زیبا به کاربران نشون بدیم.
#Laravel
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/thelarrybarker/status/1873216756585578777?t=XRUrSUzmCADikGkArfGXVA&s=35
یعنی بجای نمایش صفحه خطای دیفالته لاراول، یک صفحهی 404 کاستومایز شده و زیبا به کاربران نشون بدیم.
#Laravel
@GoldenCodeir
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/thelarrybarker/status/1873216756585578777?t=XRUrSUzmCADikGkArfGXVA&s=35
X (formerly Twitter)
Larry B (@thelarrybarker) on X
#Laravel tip:
Use Fallback Routes for 404 Handling
Fallback routes handle unmatched routes, providing a cleaner 404 experience.
The benefit?
This ensures that users always see a custom 404 page instead of the default Laravel error page.
Here’s how:
Use Fallback Routes for 404 Handling
Fallback routes handle unmatched routes, providing a cleaner 404 experience.
The benefit?
This ensures that users always see a custom 404 page instead of the default Laravel error page.
Here’s how:
👍6❤3
قابلیت @ supports به ما این امکان رو داده تا بتونیم بررسی کنیم آیا یک ویژگی CSS توسط مرورگر پشتیبانی میشه یا نه.
مثلاً ممکنه یه مرورگر نتونه ویژگیهای جدید رو درست نشون بده.
در صورتیکه از ویژگی پشتیبانی بشه استایل مدنظر اعمال میشه ، و در غیر این صورت میتونیم استایلهای دیگه برای مرورگرهای قدیمیتر تنظیم کنیم با این قابلیت.
(در تصویر مثالش درج شده کامل)
#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/codewithshripal/status/1855983339574030540?t=hLQU1LKcGWjs93IvrIrsWA&s=35
مثلاً ممکنه یه مرورگر نتونه ویژگیهای جدید رو درست نشون بده.
در صورتیکه از ویژگی پشتیبانی بشه استایل مدنظر اعمال میشه ، و در غیر این صورت میتونیم استایلهای دیگه برای مرورگرهای قدیمیتر تنظیم کنیم با این قابلیت.
(در تصویر مثالش درج شده کامل)
#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/codewithshripal/status/1855983339574030540?t=hLQU1LKcGWjs93IvrIrsWA&s=35
👍3🔥3❤1
در لاراول، برای جلوگیری از اجرای همزمان یک عملیات با استفاده از کش، از کدوم متود باید استفاده کنیم؟
Final Results
18%
Cache::getLock
26%
Cache::acquireLock
23%
Cache::setLock
34%
Cache::lock
👍8❤2
پیشنهاد میکنم یه گوشه کنار داشته باشیدش که لازمتون میشه
(برگ تقلب SQL - JOIN)
#SQL
@GoldenCodeir
https://x.com/denicmarko/status/1876955314009858322?t=xSdqa7O7oRbJeF0AlfSuSA&s=35
(برگ تقلب SQL - JOIN)
#SQL
@GoldenCodeir
https://x.com/denicmarko/status/1876955314009858322?t=xSdqa7O7oRbJeF0AlfSuSA&s=35
👍5🔥1
هنگام پیادهسازی عملیات pagination ترتیب عملیات از اهمیت بالایی برخورداره، چون وقتی از توابعی مثل SUM، AVG یا COUNT استفاده میکنین، اگر این توابع قبل از paginate فراخوانی بشن، محاسبات برای تمام دیتاها انجام میشه.
اما اگه پس از paginate استفاده کنیم، محاسبات فقط برای دیتاهای صفحهی جاری انجام میشه.
تاثیرش در تصویر زیر بهتر قابل درکه.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1881680653294752188?t=eRGdYYJK8pSEzU_lkpFc7Q&s=19
اما اگه پس از paginate استفاده کنیم، محاسبات فقط برای دیتاهای صفحهی جاری انجام میشه.
تاثیرش در تصویر زیر بهتر قابل درکه.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1881680653294752188?t=eRGdYYJK8pSEzU_lkpFc7Q&s=19
X (formerly Twitter)
Backpack for Laravel (@laravelbackpack) on X
#Laravel Tip
Be careful when you call SUM, AVG, or COUNT with Pagination! - before paginate() - you get the SUM of the query; - after paginate() - you get the SUM of that page;
Be careful when you call SUM, AVG, or COUNT with Pagination! - before paginate() - you get the SUM of the query; - after paginate() - you get the SUM of that page;
❤7👍4
در css قابلیته currentColor به ما این امکانو داده که بتونیم از رنگ متن برای باقیه بخش هامون مثل رنگ border یا background به راحتی استفاده کنیم !
بدونه اینکه مجبور بشیم رنگ رو دوباره بنویسیم.
(در تصویر کامل شرح داده شده👌🏾)
#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/codewithshripal/status/1882792377305432164?t=FGfvEwhgRi4bz7Xslwg47g&s=19
بدونه اینکه مجبور بشیم رنگ رو دوباره بنویسیم.
(در تصویر کامل شرح داده شده👌🏾)
#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/codewithshripal/status/1882792377305432164?t=FGfvEwhgRi4bz7Xslwg47g&s=19
❤2👍2
Forwarded from DevTwitter | توییت برنامه نویسی
لاراول 12در 6 اسفند عرضه خواهد شد
تیلور اعلام کرده که نسخه 12 لاراول در تاریخ 6 اسفند 1403 عرضه خواهد شد. به گفته او این اولین نسخه اصلی خواهد بود که بدون تغییرات مخرب (zero-breaking changes) عرضه میشود.
@DevTwitter | <Pouya Farshidnia/>
تیلور اعلام کرده که نسخه 12 لاراول در تاریخ 6 اسفند 1403 عرضه خواهد شد. به گفته او این اولین نسخه اصلی خواهد بود که بدون تغییرات مخرب (zero-breaking changes) عرضه میشود.
@DevTwitter | <Pouya Farshidnia/>
👍13🔥3❤1
سلام دوستان عزیزم!
قالب ولزون (Velzon)، محبوبترین قالب چندمنظوره جهان، اکنون برای فروش در دسترس است! 🎉
📅 منتشر شده در ۲۰ بهمن 1403
🔗 مشاهده پیشنمایش
با این قالب، سرعت، زیبایی و کارایی را در طراحی تجربه کنید! 🚀💡
قالب ولزون (Velzon)، محبوبترین قالب چندمنظوره جهان، اکنون برای فروش در دسترس است! 🎉
📅 منتشر شده در ۲۰ بهمن 1403
🔗 مشاهده پیشنمایش
با این قالب، سرعت، زیبایی و کارایی را در طراحی تجربه کنید! 🚀💡
👍3❤1
Forwarded from Database Labdon
وقتی Cache بیشتر از این که کمک کنه، دردسر می سازه!
چند وقت پیش روی یه پروژه بزرگ کار می کردم که توش Redis برای کشینگ استفاده می کردیم. همه چیز خوب پیش می رفت تا اینکه یه روز، یه تغییر ظاهرا بی ضرر تو کد باعث شد کش درست Invalid نشه. نتیجه چی شد؟ کاربرا داده های قدیمی رو می دیدن، بعضیا نمی تونستن اطلاعاتشون رو آپدیت کنن، و پشتیبانی حسابی شلوغ شد!
کش توزیع شده یه شمشیر دولبه ست!
از یه طرف، می تونه فشار روی دیتابیس رو کم کنه و سرعت پاسخ گویی رو بالا ببره، ولی از طرف دیگه، اگه درست مدیریت نشه، مشکلاتی مثل:
مشکل Cache Inconsistency – وقتی دیتا تو کش و دیتابیس ناهماهنگ می شه و بعضی کاربرا داده های قدیمی می بینن.
مشکل Cache Stampede – همه درخواست ها همزمان به کش می رسن و فشار زیادی ایجاد می کنن.
مشکل TTL Misconfiguration – تنظیم اشتباه زمان اعتبار کش که باعث می شه یا دیتا زودتر از حد لازم حذف بشه یا تا مدت زیادی به روز نشه.
اون تجربه یه درس مهم بهم داد: کش چیزی نیست که فقط یه بار تنظیمش کنیم و فراموشش کنیم. باید یه استراتژی کش هوشمند داشته باشیم که همیشه بهینه بمونه.
<Hamed Farzanefar/>
➖➖➖➖➖➖➖➖
https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
چند وقت پیش روی یه پروژه بزرگ کار می کردم که توش Redis برای کشینگ استفاده می کردیم. همه چیز خوب پیش می رفت تا اینکه یه روز، یه تغییر ظاهرا بی ضرر تو کد باعث شد کش درست Invalid نشه. نتیجه چی شد؟ کاربرا داده های قدیمی رو می دیدن، بعضیا نمی تونستن اطلاعاتشون رو آپدیت کنن، و پشتیبانی حسابی شلوغ شد!
کش توزیع شده یه شمشیر دولبه ست!
از یه طرف، می تونه فشار روی دیتابیس رو کم کنه و سرعت پاسخ گویی رو بالا ببره، ولی از طرف دیگه، اگه درست مدیریت نشه، مشکلاتی مثل:
مشکل Cache Inconsistency – وقتی دیتا تو کش و دیتابیس ناهماهنگ می شه و بعضی کاربرا داده های قدیمی می بینن.
مشکل Cache Stampede – همه درخواست ها همزمان به کش می رسن و فشار زیادی ایجاد می کنن.
مشکل TTL Misconfiguration – تنظیم اشتباه زمان اعتبار کش که باعث می شه یا دیتا زودتر از حد لازم حذف بشه یا تا مدت زیادی به روز نشه.
اون تجربه یه درس مهم بهم داد: کش چیزی نیست که فقط یه بار تنظیمش کنیم و فراموشش کنیم. باید یه استراتژی کش هوشمند داشته باشیم که همیشه بهینه بمونه.
<Hamed Farzanefar/>
➖➖➖➖➖➖➖➖
https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
👍11🔥2