<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Combining JavaScript and CSS for Performance</title>
	<atom:link href="http://ajaxian.com/archives/combining-javascript-and-css-for-performance/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 09 Feb 2012 06:55:33 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
	<item>
		<title>By: Tribulus</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-267575</link>
		<dc:creator>Tribulus</dc:creator>
		<pubDate>Mon, 22 Sep 2008 17:01:12 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-267575</guid>
		<description>faster is not always better</description>
		<content:encoded><![CDATA[<p>faster is not always better</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mattkime</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266219</link>
		<dc:creator>mattkime</dc:creator>
		<pubDate>Tue, 29 Jul 2008 21:09:36 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266219</guid>
		<description>for anyone developing with JSP...MattCoz beat me to it!</description>
		<content:encoded><![CDATA[<p>for anyone developing with JSP&#8230;MattCoz beat me to it!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SEOexpert</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266132</link>
		<dc:creator>SEOexpert</dc:creator>
		<pubDate>Thu, 24 Jul 2008 20:50:51 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266132</guid>
		<description>Its really a great article..... thanx</description>
		<content:encoded><![CDATA[<p>Its really a great article&#8230;.. thanx</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MattCoz</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266131</link>
		<dc:creator>MattCoz</dc:creator>
		<pubDate>Thu, 24 Jul 2008 20:11:00 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266131</guid>
		<description>I use pack:tag for this and it works wonders, handles all the minification and caching too.

http://sourceforge.net/projects/packtag</description>
		<content:encoded><![CDATA[<p>I use pack:tag for this and it works wonders, handles all the minification and caching too.</p>
<p><a href="http://sourceforge.net/projects/packtag" rel="nofollow">http://sourceforge.net/projects/packtag</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jordi</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266119</link>
		<dc:creator>jordi</dc:creator>
		<pubDate>Thu, 24 Jul 2008 07:06:34 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266119</guid>
		<description>For java developers who are not using GWT but still would like to have their javascript (and CSS) files combined, there is a project called &lt;a href=&quot;https://jawr.dev.java.net&quot; title=&quot;Jawr&quot; rel=&quot;nofollow&quot;&gt;JAWR&lt;/a&gt;. It helps in getting much better grades with YSlow, not only by combining the files, since it also sets long term expires headers, it changes a portion of the URL when the resource changes, etc. It supports several minification tools (JSMin and the YUI compressor) and sports a customizable postprocessing chain that does thing such as rewriting CSS URLs so they are not broken by being combined into a bundle with a different path. 
Jawr makes all combination ops at server startup so it has zero overhead to each request and uses gzip compression in a configurable way.</description>
		<content:encoded><![CDATA[<p>For java developers who are not using GWT but still would like to have their javascript (and CSS) files combined, there is a project called <a href="https://jawr.dev.java.net" title="Jawr" rel="nofollow">JAWR</a>. It helps in getting much better grades with YSlow, not only by combining the files, since it also sets long term expires headers, it changes a portion of the URL when the resource changes, etc. It supports several minification tools (JSMin and the YUI compressor) and sports a customizable postprocessing chain that does thing such as rewriting CSS URLs so they are not broken by being combined into a bundle with a different path.<br />
Jawr makes all combination ops at server startup so it has zero overhead to each request and uses gzip compression in a configurable way.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cromwellian</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266118</link>
		<dc:creator>cromwellian</dc:creator>
		<pubDate>Thu, 24 Jul 2008 05:41:45 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266118</guid>
		<description>GWT only packages that which is executed, it prunes everything else. See my Google I/O presentation here: http://youtube.com/watch?v=2ScPbu8ga1Q where over 100K of source is packaged into &lt;800 bytes of download. It does not simply package everything together without regard to whether it is needed.

GWT will also soon provide a mechanism for compilation-split lazy-loads, combining the best advantages of GWT&#039;s heavy optimizations and packaging, with the ability to indicate which parts of overall program control flow are required for startup vs capable of being deferred. 

Even without deferred loading, GWT typically boasts perceived startup times that are fast, one of the best examples being the Dojo and ExtJS Mail and Feed reader samples vs GWT equivalents. The GWT versions with essentially the same functionality startup anywhere from 2x to 5x faster.

I would also quibble about the combined size vs individual file size + headers comment. You don&#039;t want to just optimize bandwidth consumption, but also latency. Each HTTP request adds latency, even those over a reused and pipelined HTTP connection. When I look at network latency in Safari or Firebug, even on pipelined individual requests, I still see 10-40ms latency from the addition roundtrips.</description>
		<content:encoded><![CDATA[<p>GWT only packages that which is executed, it prunes everything else. See my Google I/O presentation here: <a href="http://youtube.com/watch?v=2ScPbu8ga1Q" rel="nofollow">http://youtube.com/watch?v=2ScPbu8ga1Q</a> where over 100K of source is packaged into &lt;800 bytes of download. It does not simply package everything together without regard to whether it is needed.</p>
<p>GWT will also soon provide a mechanism for compilation-split lazy-loads, combining the best advantages of GWT&#8217;s heavy optimizations and packaging, with the ability to indicate which parts of overall program control flow are required for startup vs capable of being deferred. </p>
<p>Even without deferred loading, GWT typically boasts perceived startup times that are fast, one of the best examples being the Dojo and ExtJS Mail and Feed reader samples vs GWT equivalents. The GWT versions with essentially the same functionality startup anywhere from 2x to 5x faster.</p>
<p>I would also quibble about the combined size vs individual file size + headers comment. You don&#8217;t want to just optimize bandwidth consumption, but also latency. Each HTTP request adds latency, even those over a reused and pipelined HTTP connection. When I look at network latency in Safari or Firebug, even on pipelined individual requests, I still see 10-40ms latency from the addition roundtrips.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: quixote218</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266115</link>
		<dc:creator>quixote218</dc:creator>
		<pubDate>Thu, 24 Jul 2008 03:20:29 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266115</guid>
		<description>&quot;reduce your entire app down to 2 HTTP requests&quot;
...
I&#039;m not quoting as an attack on cromwellian, but it is wise to remember that reducing HTTP requests is useful only so far as you reduce the overall traffic incurred to download a site. Moreover, perceived responsiveness is a different beast -- witness the oft-discussed lazy loading techniques, which increase the HTTP requests (only calling what&#039;s necessary when necessary) but decrease the perceived response times.

To optimize download, the combined size of the file should not be larger than the size of the required individual files plus the HTTP headers to retrieve them. This means that at some point you should package your combined scripts so that nothing (or few things) extra gets downloaded for a given page. Bundling everything into one file may increase the download and render time for many pages on your site.</description>
		<content:encoded><![CDATA[<p>&#8220;reduce your entire app down to 2 HTTP requests&#8221;<br />
&#8230;<br />
I&#8217;m not quoting as an attack on cromwellian, but it is wise to remember that reducing HTTP requests is useful only so far as you reduce the overall traffic incurred to download a site. Moreover, perceived responsiveness is a different beast &#8212; witness the oft-discussed lazy loading techniques, which increase the HTTP requests (only calling what&#8217;s necessary when necessary) but decrease the perceived response times.</p>
<p>To optimize download, the combined size of the file should not be larger than the size of the required individual files plus the HTTP headers to retrieve them. This means that at some point you should package your combined scripts so that nothing (or few things) extra gets downloaded for a given page. Bundling everything into one file may increase the download and render time for many pages on your site.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cromwellian</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266114</link>
		<dc:creator>cromwellian</dc:creator>
		<pubDate>Thu, 24 Jul 2008 03:15:58 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266114</guid>
		<description>&quot;Too bad that&#039;s a deal breaker.&quot;

Only for some, and only in the near term. In the long term, GWT is bound to be multilingual and include front end support for compiling JS2, and perhaps Scala. The benefits to endusers are undeniable, and there are enough polyglot programmers who aren&#039;t vehemently anti-Java zealots, that it is still worth evangelizing. It&#039;s sad, but alot of AJAX advocacy really centers around Javascript zealotry.</description>
		<content:encoded><![CDATA[<p>&#8220;Too bad that&#8217;s a deal breaker.&#8221;</p>
<p>Only for some, and only in the near term. In the long term, GWT is bound to be multilingual and include front end support for compiling JS2, and perhaps Scala. The benefits to endusers are undeniable, and there are enough polyglot programmers who aren&#8217;t vehemently anti-Java zealots, that it is still worth evangelizing. It&#8217;s sad, but alot of AJAX advocacy really centers around Javascript zealotry.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: arphen</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266113</link>
		<dc:creator>arphen</dc:creator>
		<pubDate>Thu, 24 Jul 2008 02:30:42 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266113</guid>
		<description>Any solutions for asp.net?</description>
		<content:encoded><![CDATA[<p>Any solutions for asp.net?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: eyelidlessness</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266108</link>
		<dc:creator>eyelidlessness</dc:creator>
		<pubDate>Wed, 23 Jul 2008 21:46:10 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266108</guid>
		<description>&#039;The only “downside” for some, is having to use Java.&#039;
.
Too bad that&#039;s a deal breaker.</description>
		<content:encoded><![CDATA[<p>&#8216;The only “downside” for some, is having to use Java.&#8217;<br />
.<br />
Too bad that&#8217;s a deal breaker.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: williamukoh</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266106</link>
		<dc:creator>williamukoh</dc:creator>
		<pubDate>Wed, 23 Jul 2008 21:38:45 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266106</guid>
		<description>A ColdFusion equivalent http://ajlcom.instantspot.com/blog/2008/07/09/Problem-WAY-too-many-javascript-files-Solution-cfscriptalizer</description>
		<content:encoded><![CDATA[<p>A ColdFusion equivalent <a href="http://ajlcom.instantspot.com/blog/2008/07/09/Problem-WAY-too-many-javascript-files-Solution-cfscriptalizer" rel="nofollow">http://ajlcom.instantspot.com/blog/2008/07/09/Problem-WAY-too-many-javascript-files-Solution-cfscriptalizer</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cromwellian</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266103</link>
		<dc:creator>cromwellian</dc:creator>
		<pubDate>Wed, 23 Jul 2008 19:50:32 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266103</guid>
		<description>GWT exceeds at doing this in ways unlike any other toolkit, effectively reducing the number of HTTP requests to load an application down to two,  and making all of the application&#039;s code and data effectively cached forever.

It uses a number of mechanisms to do this. It compiles all of the source code and resources at once, aggressively optimizing and obfuscating the Javascript in ways far more compact than JS minifiers/packers. It allows all images to be auto-sprited. It can take sprited images, CSS, locale data, even Flash SWF, and effectively inline them into the same file containing the JS (using data URLs). It includes a CSS optimizer as well, so prior to packing the CSS, it optimizes it.

The end result, is that you can, if you choose, reduce your entire app down to 2 HTTP requests, the second being in the cache 99% of the time, bringing the amortized number of requests to 1. And the data that is cached/loaded, is extremely optimized for size and speed.

The only &quot;downside&quot; for some, is having to use Java. :)</description>
		<content:encoded><![CDATA[<p>GWT exceeds at doing this in ways unlike any other toolkit, effectively reducing the number of HTTP requests to load an application down to two,  and making all of the application&#8217;s code and data effectively cached forever.</p>
<p>It uses a number of mechanisms to do this. It compiles all of the source code and resources at once, aggressively optimizing and obfuscating the Javascript in ways far more compact than JS minifiers/packers. It allows all images to be auto-sprited. It can take sprited images, CSS, locale data, even Flash SWF, and effectively inline them into the same file containing the JS (using data URLs). It includes a CSS optimizer as well, so prior to packing the CSS, it optimizes it.</p>
<p>The end result, is that you can, if you choose, reduce your entire app down to 2 HTTP requests, the second being in the cache 99% of the time, bringing the amortized number of requests to 1. And the data that is cached/loaded, is extremely optimized for size and speed.</p>
<p>The only &#8220;downside&#8221; for some, is having to use Java. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: doublerebel</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266097</link>
		<dc:creator>doublerebel</dc:creator>
		<pubDate>Wed, 23 Jul 2008 18:18:22 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266097</guid>
		<description>I&#039;m with Joeri - use Minify!!!  Combining, caching, minifying, customizable...
.
I can&#039;t count how many times I&#039;ve said this... yet people keep reinventing the wheel.</description>
		<content:encoded><![CDATA[<p>I&#8217;m with Joeri &#8211; use Minify!!!  Combining, caching, minifying, customizable&#8230;<br />
.<br />
I can&#8217;t count how many times I&#8217;ve said this&#8230; yet people keep reinventing the wheel.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PresenceLayer</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266090</link>
		<dc:creator>PresenceLayer</dc:creator>
		<pubDate>Wed, 23 Jul 2008 15:13:21 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266090</guid>
		<description>Our CMS, Bugano, already does this out of the box. We merge all scripts a given page is supposed to have into a single file, which gets its own URL, and is given an appropriate cache header. If the user changes any of the included stylesheets/javascripts, the header is reset.

Now all we need is YUI on-server to minify all scripts. Or something.</description>
		<content:encoded><![CDATA[<p>Our CMS, Bugano, already does this out of the box. We merge all scripts a given page is supposed to have into a single file, which gets its own URL, and is given an appropriate cache header. If the user changes any of the included stylesheets/javascripts, the header is reset.</p>
<p>Now all we need is YUI on-server to minify all scripts. Or something.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JeromeLapointe</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266087</link>
		<dc:creator>JeromeLapointe</dc:creator>
		<pubDate>Wed, 23 Jul 2008 14:30:11 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266087</guid>
		<description>*start building SOMETHING similar*</description>
		<content:encoded><![CDATA[<p>*start building SOMETHING similar*</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JeromeLapointe</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266086</link>
		<dc:creator>JeromeLapointe</dc:creator>
		<pubDate>Wed, 23 Jul 2008 14:29:35 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266086</guid>
		<description>Nice!
My company actually went ahead and decided to start building similar a month ago because of the lack of solutions in this area.
Maybe we&#039;ll be able to drop the project! :)</description>
		<content:encoded><![CDATA[<p>Nice!<br />
My company actually went ahead and decided to start building similar a month ago because of the lack of solutions in this area.<br />
Maybe we&#8217;ll be able to drop the project! :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joeri</title>
		<link>http://ajaxian.com/archives/combining-javascript-and-css-for-performance/comment-page-1#comment-266084</link>
		<dc:creator>Joeri</dc:creator>
		<pubDate>Wed, 23 Jul 2008 13:55:00 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=3912#comment-266084</guid>
		<description>http://code.google.com/p/minify/ does the same thing in PHP.</description>
		<content:encoded><![CDATA[<p><a href="http://code.google.com/p/minify/" rel="nofollow">http://code.google.com/p/minify/</a> does the same thing in PHP.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

