-
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
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Do sądu trafił pozew zbiorowy przeciw Google'owi - oskarżenie o praktyki monopolistyczne na rynku reklamy internetowej
- 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>
Najnowsze wątki
- 2025-07-18 celnicy pobili policjanta
- 2025-07-18 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-18 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=
- 2025-07-18 Białystok => Kotlin Developer <=
- 2025-07-18 Warszawa => Sales Director (Cloud solutions) <=
- 2025-07-18 Spalinowa trauma
- 2025-07-18 Polska => Senior Key Account Manager <=
- 2025-07-18 Białystok => Programista Kotlin <=
- 2025-07-18 Szczecin => Key Account Manager IT <=
- 2025-07-18 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-18 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-18 Lublin => Delphi Programmer <=
- 2025-07-18 Lublin => Programista Delphi <=
- 2025-07-17 Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- 2025-07-17 Andrzej Duda ułaskawił Roberta Bąkiewicza od zarzutu zapchnięcia ze schodów aktywistki Babci Kasi