حالت دوام پیشفرض در IndexedDB از Chrome 121 از strict
به relaxed
تغییر میکند. این تنظیم برای بهبود عملکرد و همسویی با سایر مرورگرهای اصلی مانند Firefox و Safari است. پست وبلاگ جزئیات این تغییر و معنای آن را برای توسعه دهندگان وب توضیح می دهد.
حالت های دوام IndexedDB
IndexedDB ، یک وب API قدرتمند برای ذخیره مقادیر زیادی از داده های ساخت یافته، دو حالت ماندگاری را برای تراکنش های readwrite
ارائه می دهد:
-
strict
: این حالت به صراحت به سیستم عامل دستور می دهد تا قبل از صدور رویدادcomplete
، تغییرات را روی دیسک پاک کند. - این حالت به رفتار شستشوی پیشفرض سیستمعامل
relaxed
است و پس از ایجاد تغییرات در بافر سیستمعامل، که معمولاً هر چند ثانیه یکبار شستشو میشود، رویدادcomplete
را صادر میکند.
توجه به این نکته مهم است که strict
تضمین نمی کند که تغییرات واقعاً بلافاصله روی دیسک نوشته می شوند. پس از اینکه سایت put()
فراخوانی کرد، هنوز مقدار محدودی زمان وجود دارد که در طی آن قطع برق میتواند باعث شود که تغییر روی دیسک انجام نشود و در نتیجه دفعه بعد که برنامه اجرا شود از بین برود.
وقتی صحبت از ضمانتهایی با دوام strict
میشود، رویداد complete
تراکنش IndexedDB تا زمانی که دادهها واقعاً نوشته نشدهاند فعال نمیشود، در حالی که با ماندگاری relaxed
، زمانی که رویداد complete
فعال میشود، دادهها هنوز در مرحله نوشتن هستند. (برای جزئیات بیشتر در مورد فرآیند کامل، این توضیح دهنده را بررسی کنید ).
بنابراین strict
در واقع فقط برای عملیاتی است که شما کاملاً باید بدانید که قبل از انجام کار بعدی نوشته شده است. مهاجرت داده نمونه ای است که در آن دوام strict
مورد نیاز است. هنگام انتقال از یک فروشگاه پشتیبان به فروشگاه دیگر، نمیخواهید قالب قدیمی را تا زمانی که قالب جدید نوشته شود حذف کنید. به این ترتیب، دوام strict
یک روال مهاجرت را تسهیل می کند که می تواند پس از شکست در نیمه راه بهبود یابد.
تغییر حالت دوام پیش فرض
جنبه مهم این تغییر حالت دوام پیشفرض برای تراکنشهای readwrite
در کروم است. تا کنون، پیشفرض strict
بود و از نوشتن فوری دیسک برای تغییرات دادهها اطمینان میداد. با این حال، به دلیل ملاحظات عملکرد و همسویی با سایر مرورگرهای اصلی که همگی relaxed
استفاده می کنند، Chrome نیز قصد دارد پیش فرض را به relaxed
تغییر دهد.
این تغییر برای ایجاد تعادل بهتر بین عملکرد و دوام داده طراحی شده است. در حالی که strict
حداکثر دوام داده را تضمین می کند، relaxed
اغلب برای بسیاری از برنامه های کاربردی وب کافی است و می تواند عملکرد را به روش های زیر به طور قابل توجهی بهبود بخشد.
- سرعت—در نمونه های واقعی، تیم Chrome شاهد بهبود سرعت بین ضریب 3 تا 30 بود.
- دوام دیسک، به ویژه برای دستگاه های دارای دیسک حالت جامد (SSD).
- عمر باتری افزایش یافته است.
- بهبود سرعت خواندن با توجه به معماری IndexedDB، که در آن تراکنش های خواندن اغلب در پشت تراکنش های نوشتن مسدود می شوند، سرعت خواندن به عنوان یک اثر ثانویه بهبود می یابد.
- کل دستگاه به طور مثبت تحت تأثیر قرار می گیرد، زیرا عملیات دیسک یک منبع سیستم مشترک است.
قابلیت همکاری و سازگاری
یکی از جنبه های مهم این تغییر تأثیر آن بر قابلیت همکاری و سازگاری است. Chromium با همسو شدن با رفتار سایر فروشندگان عمده مرورگرها، قابلیت همکاری را بهبود می بخشد. این استاندارد به خودی خود امکان پیاده سازی های مختلف را می دهد و هدف این تغییر هماهنگ کردن این پیاده سازی ها است. می توانید زمینه تاریخی بیشتری را در مورد این تغییر در این شماره GitHub پیدا کنید.
این برای توسعه دهندگان وب چه معنایی دارد؟
این تغییر هیچ سطح API جدیدی را معرفی نمی کند. IndexedDB API موجود باقی می ماند و این تغییر در درجه اول بر رفتار پیش فرض تراکنش های readwrite
اثر می گذارد. شما می توانید حالت دوام ترجیحی خود را هنگام ایجاد تراکنش ها مشخص کنید و به شما امکان کنترل دوام و عملکرد داده ها را می دهد. نمونه کد زیر نشان می دهد که چگونه می توان با strict
durability
در آرایه گزینه های اختیاری، رفتار قدیمی را بازگرداند.
let db;
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onsuccess = (event) => {
db = DBOpenRequest.result;
};
const transaction = db.transaction(
['toDoList'],
'readwrite',
{ durability: 'strict' });
آزمایش تغییر به صورت محلی قبل از ارسال
این تغییر در Chrome 121 اعمال خواهد شد. اگر میخواهید رفتار جدید را قبلاً به صورت محلی آزمایش کنید، پرچم #indexed-db-default-durability-relaxed
را در chrome://flags
تغییر دهید.
بیشتر بدانید
برای جزئیات فنی و بهروزرسانیهای بیشتر درباره این تغییر، اشکال ردیابی و ورودی وضعیت پلتفرم Chrome را بررسی کنید.
به طور خلاصه، حرکت کروم برای تغییر حالت دوام پیش فرض در IndexedDB با هدف بهبود عملکرد در عین حفظ سازگاری با سایر مرورگرهای اصلی است. در اکثر موارد، توصیه ما این است که هیچ کاری انجام ندهید، زیرا پیش فرض جدید بهبود عملکرد را ارائه می دهد. در صورت نیاز، می توانید به تعیین حالت دوام ترجیحی خود ادامه دهید و کنترل دوام داده ها و عملکرد در برنامه های کاربردی وب خود را به دست بگیرید.
قدردانی ها
این مقاله توسط ایوان استاد و ریچل اندرو بررسی شده است.