Arsyeja për të shkruar këtë postim ishte se më shumë se një herë më është dashur të vërej se futja e kodit të butonave të shërbimeve të ndryshme (për shembull: vkontakte, facebook, twitter, shokët e klasës) në faqe çoi në një ngadalësim të dukshëm në ngarkimin dhe shfaqjen e faqes . Fjala është për rastin kur përdoret lidhja e jashtme javascript e këtyre shërbimeve sociale.
Nëse përdorim butona të thjeshtë grafikë statikë, nuk ka probleme, sepse. ky është një minimum grafikësh dhe skriptesh që ndodhen në nivel lokal (mund të shihni një shembull zbatimi këtu http://pervushin.com/social-button-for-blog.html). Por ne shohim vetëm ikona sociale. shërbime, nuk ka statistika (sa "pëlqime" ka faqja jonë). ato. nëse duam të shohim statistika, do të duhet të lidhim skriptet e jashtme. Dhe këtu duhet pasur parasysh se sa nga këta butona kemi lidhur, shfletuesi duhet të shkarkojë kaq shumë skripta të jashtëm, d.m.th. këto janë lidhje shtesë me serverë të jashtëm.
Për të treguar se çfarë ndodh nëse faqja ka skripta në seksion
, Unë propozoj të shqyrtojmë një numër rastesh testimi. Unë do të përdor FireFox 3.6 dhe FireBug.Kështu që:
1) Faqja më e thjeshtë me një skedar stili, dy skripta dhe tre fotografi:
Dhe këtu është diagrami i shkarkimit për të:
Ju lutemi vini re se të gjitha imazhet ngarkohen vetëm pas ngarkimit të skedarit "më të gjatë" javascript.
E bëra me dashje ngarkimin e dummy_css.css dhe dummy_js.js mjaft të gjatë. Janë vetëm dy skedarë:
dummy_css.php
gjumë (2);
?>
html, trupi(
marzhi: 0;
mbushje: 0;
}
.img_container(
marzhi: 0 automatik; gjerësia: 500 px;
}
dummy_js.php
gjumë (3);
?>
varparam=1;
Pra, është e qartë seSkedari js bllokon ngarkimin e të gjitha grafikëve të tjera.
2) Gjithçka është pothuajse e njëjtë, porbedel_js.js ngarkohet nga një host i jashtëm:
Situata është e ngjashme me atë të mëparshme:
3) Le të përpiqemi të ndryshojmë në seksionkokë në vendecss dheskedarë js (css tani vjen pasjs):
Le të shohim diagramin e ngarkimit:
js ende bllokon ngarkimin e imazheve, pa marrë parasysh se nga cili host është ngarkuar.
4) Rritni kohën e ngarkimitcss deri në 4 sekonda (kodi html si në rastinN3):
5) Një rast tjetër interesant:css është më parëjs, porcss kërkon më shumë kohë për t'u ngarkuar
css po bllokon imazhet nga ngarkimi...
6) Ne transferojmë njëjs brenda< trup>
Është e qartë sebedel_js.js bllokon duke ngarkuar vetëm imazhin e tretë, i cili ndodhet nëkodi html pas tij. Por nësecss kërkon më shumë kohë për t'u ngarkuar, atëherë do të bllokojë ngarkimin e grafikëve. Nuk është e vështirë të imagjinohet që skriptet e jashtme që janë të lidhura mund të ngadalësojnë shumë ngarkimin dhe paraqitjen e faqes, veçanërisht nëse serveri në distancë kërkon shumë kohë për t'u përgjigjur për ndonjë arsye.
Vendosja e skripteve të jashtme përpara trupi>
Ajo që sugjeron menjëherë veten ... Të gjitha skriptet, ngarkimi i të cilave nuk është kritik për faqen, duhet të hiqen menjëherë përpara etiketës mbyllëse. Por kjo mund të bëhet për ato skripta në të cilat e gjithë logjika është brenda dhe nuk ka thirrje të jashtme nga kodi html. Nëse disa funksione thirren nga kodi html nga skriptet që ende nuk janë ngarkuar, atëherë situata të tilla duhet të trajtohen në mënyrë të veçantë, sepse. shkarkimi duhet të gjurmohet.
Por ka një problem tjetër, unë do ta shpjegoj me një shembull:
Nëse js më parë