it-swarm-eu.dev

Měl by se odkazovaný skript JavaScript v sekci head zobrazovat ze stejného hostitele jako hlavní dokument?

Měl jsem dojem, že pro nejlepší výkon by měl být Javascript považován za statický obsah a měl by být podáván z domény bez kuchařů spolu se soubory CSS, obrázky atd.

Ale Google zde říká: Nenabízejte dříve načtené externí soubory JS z domény bez kuchařů

U JavaScriptu, na který se odkazuje v záhlaví dokumentu a který je potřebný pro spuštění stránky, by měl být zobrazován ze stejného hostitele jako hlavní dokument. Protože většina prohlížečů blokuje další stahování a vykreslování, dokud nebudou staženy, analyzovány a spuštěny všechny soubory JavaScript, je lepší se v tomto bodě zpracování vyhnout riziku dalšího vyhledávání DNS.

Teď jsem v konfliktu. Není mi jasné, co znamená „potřebný pro spuštění stránky“.

Obvykle mám dva odkazy JavaScriptu, JQuery obsluhované z ajax.googleapis.com a soubor master.js, který většinou obsahuje obsluhy událostí ve funkci $ (document) .ready (). Je to nutné pro spuštění stránky?

Vzhledem k dostupným možnostem (ajax.googleapis.com, statická doména bez vaření, původní název hostitele), kde by se měl zobrazovat můj JavaScript?

12
James Lawruk

Teď jsem v konfliktu. Není mi jasné, co znamená „potřebný pro spuštění stránky“.

To velmi záleží na tom, jak vaše stránky fungují. V zásadě je to JavaScript, který musí být spuštěn, než někdo může používat webovou stránku.

Například, pokud jdete na http://www.weather.com/ , můžete vidět, že jemní lidé se rozhodli použít nějaké kouzlo JavaScriptu, aby poskytli nápovědu pro formulář pro vyhledávání počasí. Tj. v poli pro zadávání textu se zobrazí slova Enter Zip, City or Place (e.g. Disney World). Bohužel, při načítání stránky, alespoň na mém konci, existuje mírné zpoždění. Pokud se tedy stránka načte dostatečně pomalu a jste dostatečně rychlí, abyste mohli začít psát text před spuštěním JavaScriptu - což není úsek - váš vstup může být zašroubováván skriptem JavaScript, který slepě umísťuje tento text do vstupního pole.

Je pravda, že tomu lze zabránit tím, že se nejprve do textového pole zkontroluje vstup uživatele nebo se jednoduše vzdá této anachronistické techniky. Pak by to však nebylo velmi dobrým příkladem.

Vzhledem k dostupným možnostem (ajax.googleapis.com, statická doména bez vaření, původní název hostitele), kde by se měl zobrazovat můj JavaScript?

Na to nelze skutečně odpovědět, aniž bychom věděli, co váš JavaScript dělá. Jak zmiňuje bpeterson76, záleží také na konkrétní situaci na vašem webu. Tj. jak velká je tato stránka? jak dobře je váš požadavek na setkání s hostitelem? kolik souborů CSS, obrázků atd. se načte? kolik externích zdrojů načítá?

V závislosti na vaší konkrétní situaci to může být předčasná optimalizace.

5
George Marian

Pravidlo „cokoli, co bude nutné, aby se stránka začne vykreslovat, by mělo být ze stejného serveru“ se obecně vztahuje na vaše servery nebo jiné menší zdroje - situace, kdy může vyhledávání DNS trvat znatelně zlomek sekundy (což můžete rychle přidat, pokud jsou vaše objekty roztroušeny kolem mnoha domén). S běžnými veřejnými prostředky, jako je mezipaměť Google jQuery a dalších knihoven, existuje velká šance, že prohlížeč návštěvníka již dnes provedl vyhledávání DNS (protože jiné weby odkazují na obsah z této služby) a pravděpodobně má soubor také v mezipaměti, takže ne Je třeba provést přenos (nebo v případě požadavku se může dostat zpět krátká odpověď „304 - beze změny“). I když je pro objekt potřeba úplné stažení, síť pro doručování obsahu Google bude pro většinu uživatelů rychlejší než operace menšího rozsahu.

Jedno související pravidlo: na objekty, které nejsou vyžadovány pro správnou funkci stránky (jak ji vidí uživatel), by se v hlavní odpovědi HTTP mělo odkazovat co nejdříve. Například věci jako skripty potřebné pro reklamní služby/statistiky (tj. Google Analytics a její aplikace) - dejte uživateli svůj obsah co nejrychleji, poté načtěte podklady na pozadí, které vás opravdu zajímají. Blokoval jsem několik reklam/statistických služeb (jejich mapováním na 127.0.0.1 v mém hostitelském souboru), protože jsou často příliš pomalé a weby, které na ně odkazují brzy, mi prostě dají prázdnou stránku, zatímco skripty místo toho čekají o nich se zmínit pozdě, abych si mohl přečíst obsah, na kterém jsem, zatímco ostatní věci se v pozadí otáčí.

Užitečnost domény bez souborů cookie pro statický obsah je věcí rozsahu. Pokud máte v souborech cookie pouze jedno desetibajtové ID relace a deset tisíc návštěvníků denně požadujících ~ 20 statických objektů na návštěvu, ušetříte pouze ~ 118Mbyte šířku pásma za měsíc (20 * 20 * 10000 * 31/1024/1024). Pokud na druhé straně vaše stránky uchovávají v souborech cookie jeden nebo dva Kbytes, rozdíl může být mnohem výraznější, zejména pokud některý z vašich uživatelů přistupuje na web prostřednictvím pomalého připojení (tj. GPRS prostřednictvím tetheringu k mobilu nebo přes -crowded wifi link in high interference area) nebo pokud dostanete miliony návštěv denně.

Abych to shrnul, pro skripty, které musí být načteny před tím, než stránka může vykreslit moje preference, by byly:

  1. ajax.googleapis.com nebo podobně
  2. původní jméno hostitele volající stránky
  3. statická doména bez souborů cookie

U zdrojů, které nejsou nezbytné pro počáteční vykreslení stránky, se na ně odkazujte co nejdříve a obráťte výše uvedený seznam preferencí (ačkoli rozdíl mezi původním názvem hostitele a doménou bez souborů cookie není pravděpodobně významný, pokud nepracujete ve velkém měřítku) ).

4
David Spillett

Google provozuje obrovskou síť s obsahem distribuovanou po celém světě, která přibližuje obsah uživateli než kterýkoli jiný server, který pravděpodobně provozujete (myslím Akami, ale vlastněný společností Google). Z hlediska rychlosti je tedy logické, že Google dostane váš soubor uživateli rychleji než místní server ... pokud nejsou ve velmi těsné blízkosti vašeho osobního serveru.

Tato otázka se kolem Stackoverflow neustále opakovala a zdá se, že výše uvedená odpověď je vždy shodná. Z realistického hlediska však budou zisky z hostování u jednoho proti druhému z dlouhodobého hlediska poměrně minimální. Z minimalizace, optimalizace a snižování celkových požadavků na http získáte mnohem lepší výhody, než budete zkoumat, kde jsou věci fyzicky umístěny. V situacích, kdy to začíná záležet (udělal jsem práci, kde se stránka načítala 1,5 + miliónkrát denně, takže zlepšení o 5 kB znamenalo 5 koncertů v úspoře šířky pásma) je obvykle tým tvůrců rozhodnutí, kteří mají za úkol tato rozhodnutí zkoumat.

Osobně obvykle hostuji na Googlu z jediného důvodu, že mi dají nejaktuálnější kopii toho, co hledám.

1
bpeterson76

Důležitou věcí, kterou je třeba pamatovat, je, že prohlížeče mají omezení počtu zdrojů, které se budou stahovat současně ze stejné domény, obvykle mezi 2 a 6 v závislosti na prohlížeči. Použití jiné domény umožňuje prohlížeči stahovat více věcí současně z vaší domény.

Nejlepší řešení je použít populární CDN, jako je ajax.googleapis.com, protože tak neexistují žádné cookies. Uživatel pravděpodobně již provedl vyhledávání DNS a zdroj mohl dokonce uložit do mezipaměti. CDN jsou optimalizovány pro rychlost a pravděpodobně mají server blízko vašeho uživatele.

Pokud CDN není možnost, pak pokud máte spoustu cookies nebo máte spoustu zdrojů ke stažení (obrázky atd.), Použijte doménu bez cookies (stačí provést DNS vyhledávání jednou).

Pokud máte málo zdrojů (pouze jeden vlastní soubor javascriptu) a málo souborů cookie (pouze malé ID relace) Host ze stejné domény.

Dobré zdroje:

http://www.phpied.com/free-falling-waterfalls/

http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/

http://developer.yahoo.com/performance/rules.html

1
Adam

Přestože výše uvedené odpovědi většinu vaší otázky vyvrátily, přispěju na „potřebné pro spuštění stránky“. Přeložím to do: Je tento skript nezbytný pro používání webu? Ze zkušenosti je obvykle odpověď ne. Případy, kdy bych:

  • Ověření formuláře
  • Navigace založená na JavaScriptu (přesto není ideální)
  • Pokud rozvržení závisí na JavaScriptu
  • Pokud se pro kritické modifikace DOM použije JavaScript nebo knihovna (jako jQuery)

A Yahoo je pokyny pro výkon YSlow pro informaci.

1
Taylor Edmiston