Czym jest IndexedDB i kiedy korzystają z niego strony?

IndexedDB to zaawansowany magazyn przeglądarki na duże, uporządkowane dane. Dowiedz się, jak działa i kiedy strony go potrzebują.

Wersja robocza

IndexedDB to wbudowany w przeglądarkę magazyn na duże, uporządkowane dane. Dowiedz się, czym jest, jak działa i kiedy strony używają go zamiast local storage lub session storage.

Czy używałeś kiedyś aplikacji webowej, która działała dalej, gdy internet się urwał? Albo takiej, która była tak szybka jak aplikacja zainstalowana w telefonie, a duże ilości danych wczytywały się natychmiast? Za takimi doświadczeniami zwykle stoi coś znacznie potężniejszego niż podstawowe narzędzia pamięci przeglądarki, które omawialiśmy dotąd. To coś to IndexedDB.

IndexedDB to najpotężniejszy rodzaj pamięci przeglądarki i stoi poziom wyżej niż to, do czego zaprojektowano local storage i session storage. Większość właścicieli stron firmowych nigdy nie będzie z nim miała bezpośredniej styczności, ale jego zrozumienie daje pełny obraz tego, co przeglądarki potrafią przechowywać.

Czym jest IndexedDB?

IndexedDB to niskopoziomowa baza danych wbudowana w przeglądarkę. W przeciwieństwie do local storage i session storage, które przechowują proste pary klucz-wartość w formie tekstu, IndexedDB może przechowywać dane uporządkowane: obiekty, tablice, pliki i dane binarne. Można w niej wyszukiwać, można ją indeksować i zmieści znacznie więcej danych niż inne rodzaje pamięci przeglądarki.

Nazwa podpowiada, jak działa. Używa indeksów, czyli czegoś w rodzaju tabel wyszukiwania, by szybko znajdować zapisane rekordy bez przeszukiwania wszystkiego. Dzięki temu praktycznie nadaje się do zapisywania i pobierania dużych ilości uporządkowanych informacji w samej przeglądarce.

Czym IndexedDB różni się od innych rodzajów pamięci przeglądarki?

Local storage przechowuje małe wartości tekstowe i trzyma je bezterminowo. Session storage robi to samo, ale tylko na czas sesji bieżącej karty. Oba są proste i ograniczone. IndexedDB zasadniczo różni się zakresem i możliwościami.

Jedną z głównych różnic jest pojemność. Local storage ma zwykle limit 5 do 10 megabajtów, a IndexedDB może przechowywać setki megabajtów lub więcej, zależnie od przeglądarki i urządzenia. Przechowuje też bezpośrednio złożone struktury danych, nie tylko zwykły tekst. Obsługuje także zapytania, czyli strona może przeszukiwać i filtrować zapisane rekordy, a nie tylko pobierać wartość po dokładnym kluczu.

Do czego strony używają IndexedDB?

Praca offline

Aplikacje webowe, które muszą działać bez połączenia z internetem, używają IndexedDB do zapisywania danych lokalnie na urządzeniu. Aplikacja do notatek, narzędzie do zarządzania projektami czy klient poczty mogą zapisywać rekordy w IndexedDB, by użytkownik mógł nadal czytać, tworzyć i edytować treści offline. Zmiany synchronizują się z serwerem po przywróceniu połączenia.

Duże zbiory danych w przeglądarce

Aplikacje pracujące z dużą ilością danych, jak mapy, złożone filtry czy duże katalogi produktów, mogą używać IndexedDB do lokalnego przechowywania tych danych. Zmniejsza to częstotliwość pobierania danych z serwera i znacząco przyspiesza działanie dla użytkownika.

Przechowywanie plików

IndexedDB może przechowywać pliki bezpośrednio w przeglądarce. Przydaje się w aplikacjach, w których użytkownicy wgrywają lub tworzą treści, do których trzeba mieć dostęp między sesjami, zanim zostaną wysłane na serwer.

Czy większość stron używa IndexedDB?

Nie. IndexedDB jest używany przez złożone aplikacje webowe, a nie przez typowe strony firmowe. Strona marketingowa, strona usługowa, sklep internetowy i większość stron z treściami nie potrzebuje go. Ich potrzeby przechowywania danych dobrze pokrywają pliki cookie, local storage i session storage.

W przypadku Twojej strony wszystkie decyzje o przechowywaniu danych podejmuje platforma, na której budujesz. Kreator stron WEMASY automatycznie używa właściwego rodzaju pamięci dla każdej funkcji. Zestawienie wszystkich rodzajów pamięci przeglądarki i tego, jak do siebie pasują, znajdziesz w artykule o rodzajach pamięci przeglądarki.

Najczęściej zadawane pytania

Czy IndexedDB to prawdziwa baza danych?

Jest bazą danych w tym sensie, że przechowuje dane uporządkowane, obsługuje indeksowanie i pozwala na zapytania. Ale bardzo różni się od serwerowej bazy danych. Działa w całości w przeglądarce, na urządzeniu odwiedzającego, a nie na zdalnym serwerze. Jest przeznaczona do przechowywania danych po stronie klienta, a nie do wspólnego zarządzania danymi wielu użytkowników, którym zajmują się bazy serwerowe. W kreatorze stron WEMASY możesz to ustawić bezpośrednio na swojej stronie.

Ile danych może przechowywać IndexedDB?

Znacznie więcej niż local storage czy session storage. Większość przeglądarek pozwala IndexedDB używać dużej części dostępnego miejsca na dysku, często setek megabajtów lub więcej. Przeglądarka może poprosić użytkownika o zgodę, jeśli strona próbuje zapisać bardzo dużo. Dokładny limit zależy od przeglądarki i od ilości wolnego miejsca na urządzeniu.

Czy dane IndexedDB zostają po zamknięciu przeglądarki?

Tak. Dane IndexedDB są domyślnie trwałe, podobnie jak w local storage. Zostają w przeglądarce, dopóki użytkownik nie wyczyści danych przeglądarki albo strona ich nie usunie. Ta trwałość sprawia, że IndexedDB nadaje się do aplikacji działających offline, w których dane muszą przetrwać między sesjami.

Czy IndexedDB jest bezpieczny?

IndexedDB jest odizolowany dla każdej strony, więc jedna strona nie ma dostępu do danych innej. Ale jak inne rodzaje pamięci przeglądarki, jest dostępny dla skryptów działających na stronie. Wrażliwych danych, takich jak hasła, dane płatności i dane osobowe, nigdy nie należy w nim przechowywać. Dobrze nadaje się do danych aplikacji i dużych treści, ale nie powinien zastępować bezpiecznego przechowywania po stronie serwera.

Czy odwiedzający mogą wyczyścić dane IndexedDB?

Tak. Wyczyszczenie danych przeglądarki w jej ustawieniach usuwa IndexedDB razem z plikami cookie, local storage i cache. Odwiedzający mogą też wyczyścić go przez narzędzia deweloperskie. Aplikacje, które polegają na IndexedDB w ważnych danych, powinny to uwzględniać i synchronizować dane z serwerem, gdy jest połączenie, by lokalne dane nigdy nie były jedyną kopią.

Czy muszę znać IndexedDB, żeby zbudować stronę?

Nie. IndexedDB to narzędzie dla programistów budujących złożone aplikacje webowe. Jako właściciel strony korzystający z platformy nigdy nie będziesz z nim miał bezpośredniej styczności. Kreator stron obsługuje decyzje o pamięci przeglądarki w tle. Znajomość IndexedDB przydaje się do zbudowania pełnego obrazu działania przeglądarek, ale nie ma praktycznego wpływu na to, jak na co dzień prowadzisz swoją stronę.

Wykorzystaj to od razu
na własnej stronie.

Zacznij za darmo z WEMASY i zbuduj stronę w kilka minut.