Renderowanie dużej tabeli w webworkerze

0

Witam. Na początku zaznaczam, że jestem laikiem w tematyce webmasteringu. Potrzebuję stworzyć dość dużą tabelę o wymiarach 300 wierszy i około 20 kolumn prezentującą wyniki pomiarów pochodzących z serwera. W każdym wierszu prezentowane jest 5 wartości("pod-wierszy"). Dane w tabeli ulegają zmianie w czasie rzeczywistym, około 5-10 zmian na sekundę na całą tabelę. Obecnie powyższe założenie jest zrealizowane w oparciu o Angulara, ale niestety działa to wszystko bardzo wolno. Wpadłem na pomysł, żeby html tabeli generować w webworkerze, nadawać unikalne id każdej z komórek i podmieniać ich wartości w oparciu o jQuery. Nie mogę użyć pagingu i wirtualnych scrolli itp. Czy jest to dobre wyjście? Czy istnieją inne, lepsze?

0

Przede wszystkim jest to niemożliwe. WebWorker nie ma dostępu do DOM, zarówno tego w dokumencie jak i tego "odpiętego" od dokumentu.

Nie próbowałem, ale ludzie mówią, że React i jego wirtualny DOM minimalizuje ilość zmian w prawdziwym DOM i dzięki temu jest to szybkie. Może spróbuj Reacta zaprzęgnąć do tego widoku?

0

Może niedokładnie to opisałem. W webworkerze generuję tylko html(jest dość duży - generacja potrafi zająć parę sekund), który jest przesyłany do głównego wątku i tam wstawiany do drzewa DOM. Zauważyłem duże przyspieszenie, jedynie mam wątpliwości czy jest to poprawne rozwiązanie.

0

Nie. Szybsze będzie aktualizowanie poszczególnych komórek.

0

Tak, aktualizowanie po zmianie danych dotyczy tylko poszczególnych komórek, ale najbardziej czasochłonnym procesem jest tylko pierwsze generowanie tabeli, które to chciałem wykonać jest webworkerze.

1

Nic lepszego, co nie blokuje UI. Możesz próbować generować obiekty DOM odpięte od dokumentu, a potem całość przypiąć, realizując np. każdy wiersz w osobnej klatce (żeby UI nie blokować) - to będzie wolniejsze niż generowanie HTML w stringu, ale podobno wpięcie czegoś takiego do dokumentu, zamiast .innerHTML = html; niweluje tę różnicę. Podejrzewam jednak, że niewiele tu zyskasz, bo po prostu web jest wolny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1