blob: df48dec4e39f216d192b1eb541bb6c199d7dd935 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
---
title: Optimizing your pages for speculative parsing
slug: Web/HTML/Optimizing_your_pages_for_speculative_parsing
translation_of: Glossary/speculative_parsing
---
<p><span id="result_box" lang="ca"><span class="alt-edited">Tradicionalment en els navegadors, </span></span>el analitzador sintàctic<span lang="ca"><span class="alt-edited"> d'HTML s'executa en el fil principal i s'ha bloquejat després d'una etiqueta <code></script></code> fins que l'script s'ha recuperat de la xarxa i s'executat.</span></span> El analitzador sintàctic d'HTML en Firefox 4 i versions posteriors dóna suport a l'anàlisi especulativa fora del fil principal. A continuació s'analitza mentre que els scripts estan sent descarregats i s'executen. Com en Firefox 3.5 i 3.6, l'analitzador sintàctic d'HTML comença càrregues especulatives per als scripts, fulles d'estil i imatges que troba per davant en la seqüència. No obstant això, en Firefox 4 i posterior l'analitzador sintàctic d'HTML també executa l'algorisme de construcció de l'arbre HTML especulativament. <span id="result_box" lang="ca"><span>L'avantatge</span> <span>és que</span> <span>quan una</span> <span>especulació</span> <span>té</span> <span>èxit, no</span> <span>hi ha</span> <span>necessitat</span> <span>de reanàlisi</span> <span>de la</span> <span>part de l'arxiu</span> <span>d'entrada </span> <span>ja que </span></span><span lang="ca"><span>va ser</span> <span>analitzat</span> <span>a la recerca de</span> <span>scripts</span><span>, fulls</span> <span>d'estil</span> <span>i imatges</span></span>. L'inconvenient és que hi ha més feina perduda quan l'especulació falla.</p>
<p>Aquest document pot ajudar evitar que aquest tipus de coses que fan que l'especulació falli i alenteixen la càrrega de la pàgina.</p>
<h2 id="Fent_càrregues_especulatives_successives">Fent càrregues especulatives successives</h2>
<p>Només hi ha una regla per fer càrregues especulatives de scripts vinculats, fulls d'estil i imatges successives:</p>
<ul>
<li>Si s'utilitza un element <code><base></code> per anul·lar l'URI base de la pàgina, posar l'element de la part non-scripted del document. No ho afegiu a través de <code>document.write()</code> or <code>document.createElement()</code>.</li>
</ul>
<h2 id="Evitant_perdre_la_sortida_del_constructor_d'arbre">Evitant perdre la sortida del constructor d'arbre</h2>
<p>El constructor d'arbre especulatiu falla quan <code>document.write()</code> canvia l'estat del constructor d'arbre, de tal manera que l'estat especulatiu després de la etiqueta <code></script></code> ja no se sosté quan ha estat analitzat tot el contingut inserit per <code>document.write()</code>.<span id="result_box" lang="ca"><span> No obstant això</span><span>, només els</span> <span>usos</span> <span>inusuals</span> <span>de</span> <code><span>document.write</span><span>(</span><span>)</span></code> <span>causen</span> <span>problemes.</span> <span>Aquestes</span> <span>són</span> <span>les</span> <span>coses</span> <span>que cal evitar</span><span>:</span></span></p>
<ul>
<li><span id="result_box" lang="ca"><span>No escriviu</span> <span>arbres</span> <span>desequilibrats</span></span>. <code><script>document.write("<div>");</script></code> és incorrecta. <code><script>document.write("<div></div>");</script> </code>està bé.</li>
<li><span id="result_box" lang="ca"><span>No escriviu</span> <span>un símbol</span> <span>sense acabar</span></span>. <code><script>document.write("<div></div");</script></code> is incorrecta.</li>
<li><span id="result_box" lang="ca"><span>No</span> <span>acabeu un</span> <span>escrit</span> <span>amb</span> <span>un retorn de</span> <span>carro</span></span>. <code><script>document.write("Hello World!\r");</script></code> és incorrecta <code><script>document.write("Hello World!\n");</script> </code>està bé.</li>
<li>Noteu que l'escriptura d'etiquetes equilibrades pot fer que altres etiquetes poguin inferir d'una manera que fa que l'escriptura sigui desequilibrada. Per exemple <code><script>document.write("<div></div>");</script></code> dins de l'element head s'interpreta com <code><script>document.write("</head><body><div></div>");</script></code> el qual està desequilibrat.</li>
<li><span class="short_text" id="result_box" lang="ca"><span class="alt-edited">No doneu format part d'una taula</span></span>. <code><table><script>document.write("<tr><td>Hello World!</td></tr>");</script></table></code> és incorrecta. However, <code><script>document.write("</code><code><table></code><code><tr><td>Hello World!</td></tr></code><code></table></code><code>");</script></code> està bé.</li>
<li>TODO: <span id="result_box" lang="ca"><span>document.write</span> <span>dins d'altres</span> <span>elements</span> <span>de format.</span></span>.</li>
</ul>
|