Pamięć trwała może pomóc chronić ważne dane przed usunięciem i zmniejszyć ryzyko ich utraty.
Gdy przeglądarki napotykają problemy z miejscem na dane, np. gdy kończy się miejsce na dysku, zwykle usuwają dane, w tym dane z interfejsu Cache API i IndexedDB, z najrzadziej używanego źródła. Jeśli aplikacja nie zsynchronizowała danych z serwerem, może to spowodować utratę danych. Może też zmniejszyć niezawodność aplikacji, ponieważ usunięte zostaną zasoby wymagane do jej działania. Oba te problemy mogą negatywnie wpłynąć na wrażenia użytkownika.
Na szczęście badania przeprowadzone przez zespół Chrome pokazują, że Chrome bardzo rzadko automatycznie usuwa dane. Znacznie częściej użytkownicy ręcznie czyszczą miejsce na dane. Jeśli użytkownik regularnie odwiedza Twoją witrynę, prawdopodobieństwo usunięcia Twoich danych jest niewielkie. Aby uniemożliwić przeglądarce usunięcie Twoich danych, możesz poprosić o oznaczenie całego miejsca na dane witryny jako trwałego.
Pamięć trwała jest obsługiwana w wielu nowoczesnych przeglądarkach.
Więcej informacji o usuwaniu danych, ilości miejsca na dane, które możesz wykorzystać, i o tym, jak radzić sobie z ograniczeniami dotyczącymi miejsca na dane , znajdziesz w artykule Miejsce na dane w internecie.
Sprawdzanie, czy miejsce na dane witryny zostało oznaczone jako trwałe
Za pomocą JavaScriptu możesz sprawdzić, czy miejsce na dane witryny zostało oznaczone jako trwałe. Wywołanie navigator.storage.persisted() zwraca obietnicę, która jest realizowana z wartością logiczną wskazującą, czy miejsce na dane zostało oznaczone jako trwałe.
// 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}`);
}
Kiedy należy poprosić o pamięć trwałą?
Najlepszy moment na poproszenie o oznaczenie miejsca na dane jako trwałego jest wtedy, gdy zapisujesz ważne dane użytkownika. Żądanie powinno być najlepiej opakowane w gest użytkownika. Nie proś o pamięć trwałą podczas wczytywania strony ani w innym kodzie bootstrap. Przeglądarka może wyświetlić użytkownikowi prośbę o przyznanie uprawnień. Jeśli użytkownik nie wykonuje żadnej czynności, która jego zdaniem wymaga zapisania, prośba może być myląca i prawdopodobnie ją odrzuci. Nie wyświetlaj też prośby zbyt często. Jeśli użytkownik zdecyduje się nie przyznać uprawnień, nie wyświetlaj od razu prośby ponownie przy następnym zapisie.
Żądanie pamięci trwałej
Aby poprosić o pamięć trwałą na dane witryny, wywołaj navigator.storage.persist(). Zwraca ona obietnicę, która jest realizowana z wartością logiczną wskazującą, czy przyznano uprawnienia do pamięci trwałej.
// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
const isPersisted = await navigator.storage.persist();
console.log(`Persisted storage granted: ${isPersisted}`);
}
Jak przyznawane są uprawnienia?
Pamięć trwała jest traktowana jako uprawnienie. Przeglądarki używają różnych czynników, aby zdecydować, czy przyznać uprawnienia do trwałego miejsca na dane.
Chrome i inne przeglądarki oparte na Chromium
Chrome i większość innych przeglądarek opartych na Chromium automatycznie obsługują prośbę o uprawnienia i nie wyświetlają użytkownikowi żadnych próśb. Jeśli witryna jest uznawana za ważną, uprawnienia do pamięci trwałej są przyznawane automatycznie. W przeciwnym razie są cicho odrzucane.
Heurystyki określające, czy witryna jest ważna, obejmują:
- Jak wysoki jest poziom zaangażowania w witrynę?
- Czy witryna została zainstalowana lub dodana do zakładek?
- Czy witryna ma uprawnienia do wyświetlania powiadomień?
Jeśli prośba została odrzucona, można ją ponownie wysłać później. Zostanie ona oceniona przy użyciu tych samych heurystyk.
Firefox
Firefox przekazuje prośbę o uprawnienia użytkownikowi. Gdy zostanie wysłana prośba o pamięć trwałą, przeglądarka wyświetli użytkownikowi wyskakujące okienko z pytaniem, czy zezwolić witrynie na przechowywanie danych w pamięci trwałej.
Jaka pamięć masowa jest chroniona przez pamięć trwałą?
Jeśli przyznano uprawnienia do pamięci trwałej, przeglądarka nie usunie danych przechowywanych w:
- Cache API
- Plikach cookie
- Pamięci DOM (lokalnej pamięci masowej)
- File System API (system plików udostępniany przez przeglądarkę i działający w piaskownicy)
- IndexedDB
- Skryptach service worker
- Pamięci podręcznej aplikacji (przestarzała, nie używaj)
- WebSQL (przestarzała, nie używaj)
Jak wyłączyć pamięć trwałą?
Obecnie nie ma programowego sposobu na poinformowanie przeglądarki, że nie potrzebujesz już pamięci trwałej.
Podsumowanie
Badania przeprowadzone przez zespół Chrome pokazują, że chociaż jest to możliwe, Chrome rzadko automatycznie usuwa przechowywane dane. Aby chronić ważne dane, które mogą nie być przechowywane w chmurze lub których utrata może spowodować znaczną utratę danych, pamięć trwała może być przydatnym narzędziem, które zapewni, że przeglądarka nie usunie Twoich danych, gdy na urządzeniu lokalnym zacznie brakować miejsca na dane. Pamiętaj, aby prosić o pamięć trwałą tylko wtedy, gdy użytkownik najprawdopodobniej będzie jej potrzebował.
Dziękujemy
Szczególne podziękowania dla Victora Costana i Joe Medleya za sprawdzenie tego dokumentu. Dziękujemy Chrisowi Wilsonowi, który napisał pierwotną wersję tego dokumentu, która po raz pierwszy pojawiła się w WebFundamentals.