Gdy wykonujemy destrukcyjne operacje na tabelach bazy danych (Wstaw / Aktualizacja / Usuń) za pomocą AJAX, dom musi odzwierciedlać tę zmianę. Widzę dwa powszechnie używane podejścia.

  • Gdy destrukcyjna operacja bazy danych się powiedzie, manipuluj wierszy w tabeli HTML, aby odzwierciedlić zmianę
  • Gdy destrukcyjna operacja bazy danych się powiedzie, odśwież tabelę HTML, wykonując kolejne żądanie Ajax

Przypuśćmy, że użytkownicy A i B uzyskują dostęp do tabeli 5 rzędów. Następnie usuwa pierwszy wiersz, podczas gdy b usuwa drugi rząd. Dzięki podejściu do manipulacji Dom, nie zobaczy, że drugi wiersz zostanie usunięty, gdy b nie zobaczy, że pierwszy wiersz zostanie usunięty. Problem ten może zostać wyeliminowany przez podejście odświeżające, ale obaj użytkownicy mogą zobaczyć tylko pełne aktualizacje, gdy sami wykonują działanie.

Jakie jest najlepsze podejście?

0
morbidCode 13 lipiec 2020, 19:18

1 odpowiedź

Najlepsza odpowiedź

Problem nie może zostać wyeliminowany przez proste podejście "odświeżające" (opcja 2).

Powiedzmy zarówno A, jak i B widząc tabelę. Teraz usunięto wiersz, jeśli odświeżasz stronę A, będzie aktualizowany tylko w oknie widoku. Ale kod prowadzony na b nie będzie świadomy w momencie usunięcia wiersza. Zobaczym aktualizację dopiero po usunięciu jednego wiersza zgodnie z opcją 2 lub oczywiście wykonaj odświeżenie przeglądarki.

Jednym szybkim rozwiązaniem jest odświeżenie danych tabeli za pomocą żądania AJAX w stałym przedziale. Dla ex: 5 sekund.

Aby stół odzwierciedlał prawdziwe dane w czasie rzeczywistym z bazy danych w dowolnym momencie dla każdego użytkownika, którego musisz używać w serwisie. Dla tego potrzebujesz zarówno serwera real-time i klienta.

Możesz zaimplementować część lub funkcję całej aplikacji internetowej w czymś w rodzaju Socket.io, aby wykonać tę porcję w czasie rzeczywistym Podczas utrzymywania drugiej części, jak używa istniejącego stosu technologii.

1
im_tsm 13 lipiec 2020, 16:45