Strona główna czasami nie ładuje się

Rozwiązane
nagrodzone, www-lvlup-pro
KMatuszak
KMatuszak Weteran

Kilka razy na tydzień zdarza się takie coś, że po przejściu na stronę główną jest ona pusta :thinking: Screenshot_2020-09-10-17-28-23-713_com.brave.browser|230x500

(Odświeżenie pomaga, Chrome i Brave na Windowsie 10 oraz Androidzie 10)

SystemZ
SystemZ Admin lvlup.pro

Jaki URL jest dokładnie w przeglądarce w takim momencie? Jest to faktycznie lvlup.pro/pl/ czy raczej www.lvlup.pro/pl/ ? Czy w konsoli JS czy zakładce odnośnie requestów HTTP w narzędziach dla dev jest wtedy przedstawiany jakiś błąd ?

Niestety ostatnio panuje moda na niedokładne informacje w pasku adresu przeglądarki np. ucinanie subdomen a to potężnie utrudnia diagnostykę :frowning_face: W naszym przypadku te subdomeny i różne ścieżki mogą być nawet na 3 różnych serwerach.

KMatuszak
KMatuszak Weteran

SystemZ:

Jaki URL jest dokładnie w przeglądarce w takim momencie? Jest to faktycznie lvlup.pro/pl/ czy raczej www.lvlup.pro/pl/ ? Niestety nie zwróciłem na to uwagi 😦 EDIT: domyślam się że wersja z www, ponieważ gdy strona działa również pokazuje się to w taki sposób, a przy próbie edycji jednak jest www 😉

SystemZ:

Czy w konsoli JS czy zakładce odnośnie requestów HTTP w narzędziach dla dev jest wtedy przedstawiany jakiś błąd ? Na telefonie i tak bym tego nie sprawdził, napiszę gdy stanie mi się tak na PC, ewentualnie może ktoś inny trafi na taki błąd 🙂

SystemZ
SystemZ Admin lvlup.pro

KMatuszak:

EDIT: domyślam się że wersja z www, ponieważ gdy strona działa również pokazuje się to w taki sposób, a przy próbie edycji jednak jest www

Obie subdomeny mogą mieć takie sytuacje, na dodatek z różnych powodów 😟

KMatuszak
KMatuszak Weteran

Dziś znowu się tak stało, dokładny adres to https://www.lvlup.pro/pl/.

Niestety znowu na telefonie więc nie jestem w stanie sprawdzić konsoli.

Co ciekawe, tytuł karty to LVL UP, przy poprawnie załadowanej stronie jest to Strona główna - LVL UP.

EDIT: Korzystając z czegoś takiego https://github.com/liriliri/eruda uruchomiłem konsolę dev, wygląda to tak: Screenshot_2020-09-11-13-14-31-901_com.brave.browser|230x500

anon31176317
anon31176317

Na Chrome na Androida wszystko działa. U mnie błąd nie występuje. Przez chwilę jest białe tło, ale potem strona się ładuje.Testowałem też w trybie prywatnym żeby mieć pewność, że u mnie tego nie ma. Może to nie kwestia przeglądarki, a coś się zmieniło wewnątrz systemu i ta zmiana wpływa na przeglądarkę, bo ja mam Androida 8, a ty Androida 10.

KMatuszak
KMatuszak Weteran

Przeczytaj dokładnie temat, nie występuje to zawsze tylko czasami 🙂

anon31176317
anon31176317

Ta, ale testowałem to kilka razy, ani razu nie mogłem wywołać ;p

KMatuszak
KMatuszak Weteran

Dziś problem wystąpił u mnie w przeglądarce Chrome na PC

Wersja przeglądarki:

  • Wersja 88.0.4324.190 (Oficjalna wersja) (64-bitowa)

System operacyjny:

  • Windows 10

Zainstalowane dodatki:

  • Anti Testportal
  • Bitwarden - darmowy menedżer haseł
  • Dark Reader
  • EditThisCookie
  • h264ify
  • JSON Formatter
  • LibPlus - rozszerzenie do Librusa
  • uBlock Origin
  • Volume Master - kontroler głośności

Prawdopodobnie jednak żaden z nich nie jest problemem ponieważ zdarza się to również na telefonie gdzie żadnych dodatków nie ma :thinking:

Zrzut ekranu przedstawiający problem i logi w konsoli:

image|690x373

SystemZ
SystemZ Admin lvlup.pro

Konsola widoczna na screenie sporo mi wyjaśnia co miało miejsce. Jednak ze stronami/aplikacjami PWA jest to na tyle złożone, że będzie potrzebne ustalenie czasu zdarzeń aby to potwierdzić :harold:

Update panelu wyszedł około 17:50, wtedy też czyściłem cache po stronie cloudflare więc plik .js do którego chciała się odwołać Twoja przeglądarka nie istniał powiedzmy już około 17:55.

Przeglądarka, jeśli jest uruchomiona, w przypadku Chrome chyba też potrafi bez widocznego okna dla użytkownika - odświeżać w tle co jakiś czas i aktualizować aplikacje PWA takie jak np. nasz panel klienta i strona. Jeśli taki update miał miejsce to błąd nie powinien występować.

Mam wrażenie, że miałeś wyłączony komputer/przeglądarkę w porze aktualizacji panelu czyli tej 17:55 i tak zostało do momentu aż włączyłeś przeglądarkę przed północą i była to jedna z pierwszych stron które uruchomiłeś. Powiedzmy 5 min po włączeniu przeglądarki więc przeglądarka miała jeszcze URLe do starszych zasobów które nie istniały. Czy tak faktycznie było?

KMatuszak
KMatuszak Weteran

SystemZ:

Mam wrażenie, że miałeś wyłączony komputer/przeglądarkę w porze aktualizacji panelu czyli tej 17:55

image|36x500

Korzystałem cały czas z przeglądarki do około 17:56, po tym czasie zamknąłem ją i uruchomiłem o 18:38.

SystemZ:

i tak zostało do momentu aż włączyłeś przeglądarkę przed północą i była to jedna z pierwszych stron które uruchomiłeś. nope, caly czas korzystałem z przeglądarki po tym jak uruchomiłem ją o 18:38

SystemZ:

Czy tak faktycznie było? troche tak, troche nie :thinking:

SystemZ
SystemZ Admin lvlup.pro

Po dłuższej analizie tej instancji błędu wygląda na to, że nie jest to bezpośrednio kwestia aplikacji PWA jako takiej co pierwotnie zakładałem (stąd te moje wcześniejsze dość dziwne pytania). Bezpośrednią przyczyną jest inna polityka cache dla plików .html i .js. Ta jest skutkiem ubocznym konfiguracji nastawioną na skuteczność obrony przed atakami DDoS warstwy 7 .

Nasza strona jest dynamicznie generowana po stronie klienta. Oznacza to, że na początku strona zawsze jest "pusta" czyli widzimy biały dokument. Dopiero z upływem czasu jest wypełniana treścią, trwa to dość krótko i często nie jest widoczne. W przypadku tego błędu, dokument nie przechodzi do następnego etapu wypełnienia go treścią używając JS bo go nie wczytało 😅

W przedstawionej sytuacji na screenie wyżej, w momencie gdy użytkownik otrzymuje z serwera naszego lub cloudflare wersje cache pliku html, jest on przestarzały a pliki .js i .css pod URLami wskazanymi w starej wersji pliku html już nie istnieją. Jeszcze jeden inny błąd nie zgłasza 404 pod tym nieistniejącym linkiem do JS. Idąc dalej, zgodnie z ustaloną polityką bezpieczeństwa w nagłówkach, przeglądarka informuje o złym MIME (formacie pliku) mimo, że tak naprawdę chodzi o HTTP 404 na pliku JS.

Pracujemy już nad rozwiązaniem ale dość powoli bo jest ryzyko, że błędna wersja strony np. całkowicie niedziałająca zostanie na bliżej nieokreślony czas w cache użytkowników.

Solidnie sobie przypomniałem dlaczego wolę backend niż nowoczesny frontend :harold:

SystemZ
SystemZ Admin lvlup.pro

Minął ponad miesiąc od momentu gdy zastosowaliśmy wiele metod jednocześnie aby zapobiec pustej stronie: https://lvlup.rok.ovh/t/dziennik-zmian-lvlup-pro-2021/17327/#42?u=systemz

Jednocześnie od tamtej pory wypuściliśmy 8 update'ów panelu. Po tych update'ach nie widzieliśmy żadnego feedbacku w postaci screenów z białą stroną na discordzie.

Czy problem pojawił się wam chociaż kilka razy czy możemy uznać to już za rozwiązane? ☺️

KMatuszak
KMatuszak Weteran

U mnie problem już nie występuje.