تغییر در حالت دوام پیش فرض در IndexedDB

حالت دوام پیش‌فرض در 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 اثر می گذارد. شما می توانید حالت دوام ترجیحی خود را هنگام ایجاد تراکنش ها مشخص کنید و به شما امکان کنترل دوام و عملکرد داده ها را می دهد. نمونه کد زیر نشان می دهد که چگونه می توان با تنظیم durability در آرایه گزینه های strict ، رفتار قدیمی را بازگرداند.

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 با هدف بهبود عملکرد در عین حفظ سازگاری با سایر مرورگرهای اصلی است. در اکثر موارد، توصیه ما این است که هیچ کاری انجام ندهید، زیرا پیش فرض جدید بهبود عملکرد را ارائه می دهد. در صورت نیاز، می توانید به تعیین حالت دوام ترجیحی خود ادامه دهید و کنترل دوام داده ها و عملکرد در برنامه های کاربردی وب خود را به دست بگیرید.

سپاسگزاریها

این مقاله توسط ایوان استاد و ریچل اندرو بررسی شده است.