ذخیره سازی مداوم

ذخیره‌سازی پایدار می‌تواند به محافظت از داده‌های حیاتی در برابر حذف شدن کمک کند و احتمال از دست رفتن داده‌ها را کاهش دهد.

وقتی مرورگرها با فشار ذخیره‌سازی مانند کمبود فضای دیسک مواجه می‌شوند، معمولاً داده‌ها، از جمله داده‌های Cache API و IndexedDB، را از آخرین منبع استفاده‌شده حذف می‌کنند. اگر برنامه داده‌ها را با سرور همگام‌سازی نکرده باشد، این امر ممکن است باعث از دست رفتن داده‌ها شود و با حذف منابع مورد نیاز برای عملکرد برنامه، قابلیت اطمینان آن را کاهش دهد که هر دو منجر به تجربه کاربری منفی می‌شوند.

خوشبختانه، تحقیقات تیم کروم نشان می‌دهد که داده‌ها به ندرت توسط کروم به طور خودکار پاک می‌شوند. پاک کردن دستی فضای ذخیره‌سازی توسط کاربران بسیار رایج‌تر است. بنابراین اگر کاربری مرتباً از سایت شما بازدید می‌کند، احتمال اینکه داده‌های شما حذف شوند بسیار کم است. برای جلوگیری از حذف داده‌های شما توسط مرورگر، می‌توانید درخواست کنید که کل فضای ذخیره‌سازی سایت شما به صورت دائمی علامت‌گذاری شود.

ذخیره‌سازی پایدار در بسیاری از مرورگرهای مدرن پشتیبانی می‌شود.

Browser Support

  • کروم: ۵۵.
  • لبه: ۷۹.
  • فایرفاکس: ۵۷.
  • سافاری: ۱۵.۲.

Source

برای کسب اطلاعات بیشتر در مورد تخلیه، میزان فضای ذخیره‌سازی مجاز و نحوه مدیریت محدودیت‌های سهمیه، به بخش ذخیره‌سازی برای وب مراجعه کنید.

بررسی کنید که آیا فضای ذخیره‌سازی سایت شما به عنوان دائمی علامت‌گذاری شده است یا خیر

شما می‌توانید از جاوا اسکریپت برای تعیین اینکه آیا فضای ذخیره‌سازی سایت شما به عنوان دائمی علامت‌گذاری شده است یا خیر، استفاده کنید. فراخوانی navigator.storage.persisted() یک Promise را برمی‌گرداند که با یک مقدار بولی مشخص می‌شود و نشان می‌دهد که آیا فضای ذخیره‌سازی به عنوان دائمی علامت‌گذاری شده است یا خیر.

// Check if site's storage has been marked as persistent
if (navigator.storage && navigator.storage.persist) {
  const isPersisted = await navigator.storage.persisted();
  console.log(`Persisted storage granted: ${isPersisted}`);
}

چه زمانی باید درخواست ذخیره‌سازی مداوم بدهم؟

بهترین زمان برای درخواست علامت‌گذاری فضای ذخیره‌سازی به عنوان دائمی، زمانی است که داده‌های حیاتی کاربر را ذخیره می‌کنید و درخواست در حالت ایده‌آل باید در یک حرکت کاربر قرار گیرد. هنگام بارگذاری صفحه یا در سایر کدهای بوت‌استرپ، درخواست ذخیره‌سازی دائمی نکنید، زیرا ممکن است مرورگر از کاربر اجازه بخواهد. اگر کاربر کاری را که فکر می‌کند نیاز به ذخیره دارد انجام نمی‌دهد، ممکن است درخواست گیج‌کننده باشد و احتمالاً درخواست را رد کند. علاوه بر این، بیش از حد درخواست نکنید. اگر کاربر تصمیم به عدم اعطای مجوز گرفت، در ذخیره بعدی فوراً دوباره درخواست نکنید.

درخواست فضای ذخیره‌سازی دائمی

برای درخواست ذخیره‌سازی پایدار برای داده‌های سایت خود، تابع navigator.storage.persist() را فراخوانی کنید. این تابع یک Promise برمی‌گرداند که با یک مقدار بولی مشخص می‌شود و نشان می‌دهد که آیا مجوز ذخیره‌سازی پایدار اعطا شده است یا خیر.

// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
  const isPersisted = await navigator.storage.persist();
  console.log(`Persisted storage granted: ${isPersisted}`);
}

مجوز چگونه اعطا می‌شود؟

ذخیره‌سازی پایدار به عنوان یک مجوز در نظر گرفته می‌شود. مرورگرها از عوامل مختلفی برای تصمیم‌گیری در مورد اعطای مجوزهای ذخیره‌سازی پایدار استفاده می‌کنند.

کروم و سایر مرورگرهای مبتنی بر کرومیوم

کروم و اکثر مرورگرهای مبتنی بر کرومیوم به طور خودکار درخواست مجوز را مدیریت می‌کنند و هیچ پیامی به کاربر نشان نمی‌دهند. در عوض، اگر سایتی مهم تلقی شود، مجوز ذخیره‌سازی مداوم به طور خودکار اعطا می‌شود، در غیر این صورت به طور خاموش رد می‌شود.

روش‌های اکتشافی برای تعیین اهمیت یک سایت عبارتند از:

  • سطح تعامل سایت چقدر است؟
  • آیا سایت نصب یا بوکمارک شده است؟
  • آیا به سایت اجازه نمایش اعلان‌ها داده شده است؟

اگر درخواست رد شود، می‌توان بعداً دوباره درخواست داد و با استفاده از همان روش‌های اکتشافی ارزیابی خواهد شد.

فایرفاکس

فایرفاکس درخواست مجوز را به کاربر واگذار می‌کند. وقتی درخواست ذخیره‌سازی پایدار می‌شود، یک پنجره‌ی رابط کاربری از کاربر می‌پرسد که آیا به سایت اجازه می‌دهد داده‌ها را در ذخیره‌سازی پایدار ذخیره کند یا خیر.

پنجره‌ای که فایرفاکس هنگام درخواست سایتی برای ذخیره‌سازی مداوم نشان می‌دهد.
پنجره‌ای که فایرفاکس هنگام درخواست سایتی برای ذخیره‌سازی مداوم نشان می‌دهد.

چه نوع حافظه‌ای توسط ذخیره‌سازی پایدار محافظت می‌شود؟

اگر مجوز ذخیره‌سازی مداوم اعطا شود، مرورگر داده‌های ذخیره شده در موارد زیر را حذف نمی‌کند:

  • رابط برنامه‌نویسی کاربردی حافظه پنهان
  • کوکی‌ها
  • ذخیره‌سازی DOM (ذخیره‌سازی محلی)
  • رابط برنامه‌نویسی کاربردی سیستم فایل (سیستم فایل ارائه شده توسط مرورگر و سندباکس شده)
  • IndexedDB
  • کارگران خدماتی
  • حافظه پنهان برنامه (منسوخ شده، استفاده نکنید)
  • WebSQL (منسوخ شده، استفاده نکنید)

نحوه غیرفعال کردن فضای ذخیره‌سازی دائمی

در حال حاضر، هیچ روش برنامه‌نویسی برای اطلاع دادن به مرورگر که دیگر به فضای ذخیره‌سازی پایدار نیاز ندارد، وجود ندارد.

نتیجه‌گیری

تحقیقات تیم کروم نشان می‌دهد که اگرچه ممکن است، اما داده‌های ذخیره شده به ندرت توسط کروم به طور خودکار پاک می‌شوند. برای محافظت از داده‌های حیاتی که ممکن است در فضای ابری ذخیره نشوند یا منجر به از دست رفتن قابل توجه داده‌ها شوند، ذخیره‌سازی پایدار می‌تواند ابزاری مفید باشد تا اطمینان حاصل شود که داده‌های شما توسط مرورگر هنگام مواجهه با فشار ذخیره‌سازی دستگاه محلی حذف نمی‌شوند. و به یاد داشته باشید، فقط زمانی درخواست ذخیره‌سازی پایدار کنید که کاربر به احتمال زیاد آن را بخواهد.

ممنون

تشکر ویژه از ویکتور کاستان و جو مدلی برای بررسی این سند. با تشکر از کریس ویلسون که نسخه اصلی این سند را که برای اولین بار در وب‌فاندامنتالز منتشر شد، نوشت.