-
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-05-31 Skoro jest tak dobrze i TANIO to dlaczego jeszcze nie jeździmy na takich akumulatorach?
- 2025-05-31 Warszawa => IT Data Analyst (obszar Power BI) <=
- 2025-05-31 Warszawa => IT Hardware Specialist - Wsparcie i Konfiguracja <=
- 2025-05-31 Środa Wielkopolska => Konsultant wewnętrzny SAP FI/CO <=
- 2025-05-31 Gdańsk => PHP Developer <=
- 2025-05-31 Lublin => Delphi Programmer <=
- 2025-05-31 co to za obcęgi? [OT]
- 2025-05-30 Rondo :)
- 2025-05-30 Warszawa => Senior Account Manager <=
- 2025-05-30 Warszawa => Senior C++ Developer (analiza numeryczna i modelowanie) <=
- 2025-05-30 Gdańsk => Team Lead Data Engineer (Snowflake) <=
- 2025-05-30 Warszawa => Team Lead Data Engineer (obszar Snowflake) <=
- 2025-05-30 Gdańsk => Programista Delphi <=
- 2025-05-30 Warszawa => Software Engineer .Net <=
- 2025-05-30 Warszawa => Inżynier oprogramowania .Net <=