<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aleksandar Saša Babić - blog &#187; Optimizacija</title>
	<atom:link href="http://www.salebab.net/teme/optimizacija/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.salebab.net</link>
	<description>Razvoj web aplikacija - PHP, MySQL, Javascript, Ajax, jQuery i druge psovke</description>
	<lastBuildDate>Sat, 29 Oct 2011 15:02:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>HTTP zahtevi za slikama iz CSS fajla</title>
		<link>http://www.salebab.net/http-zahtevi-za-slikama-iz-css-fajla/</link>
		<comments>http://www.salebab.net/http-zahtevi-za-slikama-iz-css-fajla/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 13:39:58 +0000</pubDate>
		<dc:creator>Aleksandar Babić</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[Optimizacija]]></category>

		<guid isPermaLink="false">http://www.salebab.net/?p=66</guid>
		<description><![CDATA[Nedavno sam primetio jednu čudnu stvar &#8211; ukoliko se link do jedne iste slike nekoliko puta ponavlja u CSS fajlu, Firefox (a verovatno i drugi) neće napraviti jedan HTTP upit do te slike, već onoliko upita, koliko se puta taj isti link ponavlja u tom fajlu. Zvuči neverovatno da se prilikom parsiranja CSS fajla ne [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border: 0pt none;" title="request" src="http://www.salebab.net/wp-content/uploads/2010/01/request.jpg" alt="" width="359" height="157" align="left" />Nedavno sam primetio jednu čudnu stvar &#8211; ukoliko se link do jedne iste slike nekoliko puta ponavlja u CSS fajlu, Firefox (a verovatno i drugi) neće napraviti jedan HTTP upit do te slike, već onoliko upita, koliko se puta taj isti link ponavlja u tom fajlu. Zvuči neverovatno da se prilikom parsiranja CSS fajla ne vodi računa o već poslatim zahtevima, jer takva optimizacija može biti uvedena uz svega par linija koda i sprečiti nepotrebne zahteve i zauzeće resursa. No, kako bilo, ostaje na nama da se potrudimo da ubrzamo naš sajt drugim metodama.<span id="more-66"></span></p>
<p>Ukoliko ste se bavili optimizacijom sajtova, verovatno ste naleteli na dobro poznate <a href="http://developer.yahoo.com/performance/rules.html" target="_blank">savete </a>od Yahoo-a i prvi među njima savet za smanjenje broja HTTP zahteva. Kombinovanje više sličica u jednu i prikazivanje delova te kombinovane slike preko koordinata (background-position u CSS-u) ima svoje ogromne prednosti.</p>
<p>Uzmimo za primer da na stranici imamo tri liste sa tri različite sličice za strelice. Kombinovanjem, tri sličice možemo spojiti u jednu.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-104" title="arrows" src="http://www.salebab.net/wp-content/uploads/2010/01/arrows1.jpg" alt="" width="320" height="157" /></p>
<p style="text-align: left;">U CSS fajlu je takođe veoma jednostavno podesiti putanje do sličice, i koordinate za svaku listu posebno. Ujedno, CSS kod sličan ovome se može videti na mnogim sajtovima širom interneta, recimo <a href="http://www.alistapart.com/articles/sprites">A List Apart &#8211; CSS Sprites</a> ili <a href="http://stylemeltdown.com/2007/10/22/image-sprite-navigation-with-css/">Image Sprite CSS Navigation</a>.</p>
<pre class="brush: css; title: ; notranslate">
ul {
	list-style-type:none;
}
ul li {
	padding-left:15px;
}
ul#black li {
	background: #fff url(&quot;arrows.jpg&quot;) no-repeat left 6px;
}
ul#blue li {
	background: #fff url(&quot;arrows.jpg&quot;) no-repeat left -14px;
}
ul#green li {
	background: #fff url(&quot;arrows.jpg&quot;) no-repeat left -34px;
}
</pre>
<p style="text-align: left;">I ako je to putanja do iste sličice, sa ovakvim kodom možemo samo pogoršati situaciju. Naš browser će poslati tri zahteva za istom sličicom i download-ovaćemo tri iste slike. Pošto je kombinovana slika većih dimenzija i veće težine od svake pojedinačne, jasno je da se ovakvom metodom uvećava protok podataka za 3 puta.</p>
<p style="text-align: left;">Rešenje ovog problema je veoma jednostavno i treba samo jednom &#8220;pozvati&#8221; tu sličicu, a poziciju im podesiti, za svaku listu posebno.</p>
<pre class="brush: css; title: ; notranslate">
ul {
	list-style-type:none;
}
ul li {
	padding-left:15px;
}
ul#black li, ul#blue li, ul#green li  {
	background: #fff url(&quot;arrows.jpg&quot;) no-repeat;
}
ul#black li {
	background-position: left 6px;
}
ul#blue li {
	background-position: left -14px;
}
ul#green li {
	background-position: left -34px;
}
</pre>
<p style="text-align: left;">Možete pogledati i primere <a href="http://www.salebab.net/testiranje/arrows/" target="_blank">neoptimizovanog </a>koda i <a href="http://www.salebab.net/testiranje/arrows/?optimizovan=1" target="_blank">optimizovanog</a>, koji koriste različite CSS fajlove.</p>
<h2 style="text-align: left;">Dodatak: Kako videti i analizirati HTTP zahteve?</h2>
<p>Postoji mnoštvo softvera koji omogućavaju skeniranje protoka na mrežnom adapteru računara. Moguće i najbolji među njima je <a href="http://www.wireshark.org/" target="_blank">Wireshark</a>, koji može da analizira sve protokole.</p>
<p>Web programerima će sigurno dosta zanimljiviji biti plugin za Firefox &#8211; <a href="https://addons.mozilla.org/en-US/firefox/addon/3829" target="_blank">Live HTTP Headers</a>. A evo i rezultata iz njega na kome se više nego jasnije vidi rezultat optimizacije.</p>
<p><a href="http://www.salebab.net/wp-content/uploads/2010/01/live-http1.jpg"><img class="aligncenter size-full wp-image-80" style="border: none;" title="live-http" src="http://www.salebab.net/wp-content/uploads/2010/01/live-http1.jpg" alt="" width="500" height="202" /></a></p>
<p>Na tabu &#8220;Headers&#8221; možete videti kompletne GET I POST zahteve, sa headerom, kao i kompletne odgovore servera. Na tabu &#8220;Generator&#8221; se nalaze samo uprošćeni zahtevi, bez headera. Trebate samo imati u vidu da se sličice keširaju na lokalnom računaru i da ukoliko ste već posetili neku stranu, verovatno je da  zahtevi se neće pojaviti. CTRL+F5 daje realnu sliku.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.salebab.net/http-zahtevi-za-slikama-iz-css-fajla/&via=salebab&text=HTTP zahtevi za slikama iz CSS fajla&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.salebab.net/http-zahtevi-za-slikama-iz-css-fajla/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

