Pamięć trwała

Pamięć trwała może pomóc chronić najważniejsze dane przed usunięciem i zmniejszyć ryzyko ich utraty.

W obliczu problemów z pamięcią, np. małej ilości miejsca na dysku, przeglądarki zwykle usuwaj dane, w tym z interfejsów Cache API i IndexedDB, z ostatnio używanego źródła. Może to spowodować utratę danych, jeśli aplikacja nie zsynchronizował danych z serwerem i zmniejszał niezawodność aplikacji o usuwanie zasobów wymaganych do działania aplikacji, co prowadzi do mają negatywny wpływ na wrażenia użytkowników.

Na szczęście badania przeprowadzone przez zespół Chrome pokazują, że dane są bardzo rzadko automatycznie wyczyszczone przez Chrome. Użytkownicy znacznie częściej wykonują ręczną pracę. wyczyścić pamięć. Jeśli więc użytkownik regularnie odwiedza Twoją witrynę, że dane są usuwane. Aby zapobiec usunięciu przeglądarki swoich danych, możesz poprosić o oznaczenie całej pamięci witryny jako są niezmienne.

Pamięć trwała jest obsługiwana w wielu nowoczesnych przeglądarkach.

Obsługa przeglądarek

  • Chrome: 55.
  • Krawędź: 79.
  • Firefox: 57.
  • Safari: 15.2

Źródło

Aby dowiedzieć się więcej o usuwaniu, a także o tym, ile możesz przechowywać i jak obsługiwać limit Więcej informacji znajdziesz w artykule Miejsce na dane w internecie.

Sprawdź, czy pamięć masowa Twojej witryny została oznaczona jako trwała

Aby sprawdzić, czy miejsce na dane w Twojej witrynie zostało oznaczone, możesz użyć JavaScriptu jako nieustanne. Wywołanie navigator.storage.persisted() zwraca obietnicę, że jest określany za pomocą wartości logicznej, która wskazuje, czy pamięć została oznaczona jako nie uległo zmianie.

// 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łą?

Najlepszym momentem na oznaczenie pamięci jako trwałej jest najważniejszych danych użytkownika. Żądanie powinno być uwzględnione w informacjach o użytkowniku, gest. Nie wymagaj pamięci trwałej podczas wczytywania strony ani podczas innego procesu wczytywania przeglądarka może poprosić użytkownika o zgodę. Jeśli użytkownik nie wykonuje żadnych działań, które według niego powinny być zapisane, prompt może być może wprowadzać w błąd i prawdopodobnie odrzuci prośbę. Poza tym nie proś zbyt często. Jeśli użytkownik postanowił nie udzielać uprawnień, nie przyznawaj od razu przy następnym zapisie.

Żądanie pamięci trwałej

Aby zażądać trwałego przechowywania danych witryny, wywołaj navigator.storage.persist() Zwraca obietnicę rozwiązaną za pomocą boolean, wskazująca, 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 są przyznawane uprawnienia?

Pamięć trwała jest traktowana jako uprawnienia. Przeglądarki używają różne czynniki przy podejmowaniu decyzji o przyznaniu uprawnień do trwałej pamięci masowej.

Chrome i inne przeglądarki oparte na Chromium

Chrome i większość innych przeglądarek opartych na Chromium automatycznie żądania uprawnień i nie wyświetlaj żadnych próśb o zgodę. Zamiast tego, jeśli że witryna jest uznawana za ważną, uprawnienie do trwałego przechowywania danych to przyznane automatycznie, w przeciwnym razie zostanie dyskretna odmowa.

Oto metody heurystyczne służące do określania, czy witryna jest ważna:

  • Jak wysoki jest poziom zaangażowania w witrynę?
  • Czy witryna została zainstalowana lub dodana do zakładek?
  • Czy witryna otrzymała uprawnienia do wyświetlania powiadomień?

Jeśli prośba została odrzucona, można poprosić o nie później. oceniony przy użyciu tej samej heurystyki.

Firefox

Firefox przekazuje użytkownikowi prośbę o przyznanie uprawnień. Gdy pamięć trwała pojawia się wyskakujące okienko z pytaniem, czy zezwolić na do przechowywania danych w pamięci trwałej.

Wyskakujące okienko wyświetlane w przeglądarce Firefox, gdy witryna żąda trwałego przechowywania danych.
Wyskakujące okienko wyświetlane w przeglądarce Firefox, gdy witryna żąda trwałego przechowywania danych.

Jakie miejsce na dane jest chronione przez pamięć trwałą?

Jeśli przyznano uprawnienia do pamięci trwałej, przeglądarka nie zostanie trwale usunięta dane przechowywane w:

  • Interfejs API pamięci podręcznej
  • Pliki cookie
  • Pamięć DOM (pamięć lokalna)
  • Interfejs File System API (system plików udostępniany przez przeglądarkę i piaskownicy)
  • IndexedDB
  • Skrypty service worker
  • Pamięć podręczna aplikacji (wycofana, nie powinna być używana)
  • WebSQL (wycofany, nie należy go używać)

Jak wyłączyć pamięć trwałą

Obecnie nie można automatycznie poinformować przeglądarki, że użytkownik wymagają trwałej pamięci masowej.

Podsumowanie

Badania przeprowadzone przez zespół Chrome wykazały, że chociaż jest to możliwe, przechowywane dane są często są automatycznie usuwane przez Chrome. Ochrona najważniejszych danych, które mogą nie będą przechowywane w chmurze ani spowodują znaczną utratę danych, może być przydatnym narzędziem, dzięki któremu dane nie będą jest usuwana przez przeglądarkę, gdy na urządzeniu lokalnym jest zajęte miejsce. Pamiętaj, że żądania trwałej pamięci masowej należy przesyłać tylko wtedy, gdy jest największe prawdopodobieństwo, że użytkownik tego oczekujesz.

Dziękujemy

Specjalne podziękowania za zapoznanie się z tym artykułem: Victor Costan i Joe Medley. Dziękujemy Chrisowi Wilsonowi, który napisał oryginalną wersję tego artykułu, pojawiła się po raz pierwszy w WebFundamentals.

Baner powitalny: Umberto w aplikacji Unsplash