-
Data: 2010-02-22 21:33:14
Temat: Re: Parsowanie i renderowanie - ile razy
Od: porneL <n...@p...net> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Mon, 22 Feb 2010 13:33:03 -0000, Peter May <p...@p...fm> wrote:
>>> Gdzieś kiedyś czytałem, że zawartość wysłana z serwera jako text/html
>>> jest przeglądarkę obrabiana dwukrotnie: parsowanie, potem renderowanie.
>>
>> Ale renderowanie na podstawie sparsowanego.
>
> Parsowanie zawartości wysłanej jako text/html właśnie mogę sobie
> wyobrażać tak. Choćby w celu możliwie jak najlepszego poprawienia
> błędnego kodu. Przeglądarka próbuje coś tam naprawić i potem to
> wyświetlić.
>
> Natomiast w trybie xml-owym nawet najmniejszy błąd w składni daje po
> prostu błąd i przerwę w renderowaniu dokumentu.
>
> No i szukam jakieś potwierdzenia lub zaprzeczenia tej tezy.
W obu przypadkach kod jest pobierany raz, parsowany do DOM, a potem na
podstawie DOM (kiedy to już nie ma śladu po źródle i różnicach
składniowych) renderowany tyle razy ile trzeba.
W starych Gecko była niedoróbka, która uniemożliwiała wyświetlanie
progresywne, więc było mniej renderowania, kosztem opóźnienia w
wyświetlaniu strony. We współczesnych Geckonach text/html i XML są
traktowane prawie tak samo.
Duże różnice w text/html vs XML to poplątanie parsera z silnikiem
JavaScript. W trybie XML skrypty nie blokują parsera. W text/html
działanie document.write jest zależne od aktualnego stanu parsera, przez
co parser jest zależny od skryptów i musi wstrzymywać parsowanie strony
przy każdym napotkanym skrypcie (jeśli skrypt jest zewnętrzny, to wszystko
staje dęba póki skrypt się nie ściągnie i nie skończy wykonywać).
Niektóre przeglądarki (Safari 4, IE8, Fx 3.6) podczas czekania na skrypt z
sieci parsują stronę drugi raz (bez skryptów), żeby odkryć i zacząć
ładować wszystkie skrypty i obrazki dalej w dokumencie.
Text/html może być parsowany prawie-dwukrotnie w bardzo szczególnym
przypadku - gdy zapomnisz zamknąć <script>, <textarea> lub komentarz.
Wtedy przeglądarka dojdzie do końca dokumentu, kapnie się, że niedomknięty
tag "pożarł" cały dokument, poprawi go i zacznie jeszcze raz.
Natomiast w walidującym się text/html nie dochodzi do poprawiania błędów,
więc nie ponosi się tego kosztów.
--
http://pornel.net
this.author = new Geek("porneL");
Następne wpisy z tego wątku
- 23.02.10 11:38 Peter May
- 23.02.10 13:05 Paweł Piskorz
- 23.02.10 13:38 Peter May
- 23.02.10 15:44 Paweł Piskorz
- 23.02.10 16:06 Peter May
- 28.02.10 09:45 Łukasz Lech
Najnowsze wątki z tej grupy
- Jakie znacie działające serwery grup dyskusyjnych?
- is it live this group at news.icm.edu.pl
- php, linki z nazwami a $_GET, SEO
- www polityka pl captcha
- dyktatura brudnego palucha
- www.znanylekarz.pl
- Czy pytanie o sczytywanie stron programami/skryptami to tu?
- Grupy webdevowe
- Jak wydrukować stronę?
- IIS, kilka witryn
- linki <a href="/strona.php"> (ze slashami)
- co rozszerza stronę??
- responsywny akapit <p>
- Czy istnieje jakiś emulator przeglądarek pod Mac'a?
- taka sama konfiguracja dla localhost i produkcji
Najnowsze wątki
- 2025-03-19 Brak ograniczeń dla chińskiego kapitału - wam nie do rządu, tylko na zmywak do chińskiej knajpy!!!
- 2025-03-19 Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- 2025-03-19 szal-Unia == federacja policyjna
- 2025-03-19 Polsza == państwo policyjne
- 2025-03-19 Grzegorz Płaczek o programie szczepień dzieci. ,,Stworzono eldorado dla firm farmaceutycznych"
- 2025-03-19 Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- 2025-03-19 Gemini
- 2025-03-19 Mokry sen Zenka :)
- 2025-03-19 Re: Dlaczego tak odstają od Tesli?
- 2025-03-19 Czy grupa p.s.prawo przetrwa najbliższe wybory (prezydenta)?
- 2025-03-19 Warszawa => Frontend Developer (obszar Angular13+) <=
- 2025-03-19 Czy "niedopuszczony pełnomocnik" jest w prawie się na to skarżyć jak "świadek" zmarła bez zostawienia mu takiej instrukcji?
- 2025-03-19 Kraków => Business Development Manager - Network and Network Security
- 2025-03-19 Ostrów Świętokrzy => Node.js / Fullstack Developer <=
- 2025-03-19 Kraków => IT Expert (Network Systems area) <=