<?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>PHP Gangsta - Der PHP Blog mit Praxisbezug &#187; fast</title> <atom:link href="http://www.phpgangsta.de/tag/fast/feed" rel="self" type="application/rss+xml" /><link>http://www.phpgangsta.de</link> <description>Ein PHP Blog mit Themen aller Art. Manchmal vergewaltige ich PHP...</description> <lastBuildDate>Thu, 02 Feb 2012 22:22:51 +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>Externe Javascript Dateien zusammenfassen</title><link>http://www.phpgangsta.de/externe-javascript-dateien-zusammenfassen</link> <comments>http://www.phpgangsta.de/externe-javascript-dateien-zusammenfassen#comments</comments> <pubDate>Tue, 25 Aug 2009 17:59:54 +0000</pubDate> <dc:creator>Michael Kliewe</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[css]]></category> <category><![CDATA[fast]]></category> <category><![CDATA[Javascript]]></category> <category><![CDATA[speed]]></category><guid isPermaLink="false">http://www.phpgangsta.de/?p=341</guid> <description><![CDATA[Wir alle wissen: Langsame Webseiten bekommen weniger Besucher. Dazu gibt es auch Auswertungen von großen Portalen und Suchmaschinen. Doch wie beschleunigt man die eigene Webseite? Häufig übersieht man einen wichtigen Teil: Das Frontend bzw. den Client. Mag das PHP-Script auch sehr schnell sein (die Zeit gemessen mit microtime() ergibt 0.1 Sekunden), die Seite kann sich [...]<br/><br/> Keine ähnlichen Artikel.]]></description> <content:encoded><![CDATA[<p>Wir alle wissen: Langsame Webseiten bekommen weniger Besucher. Dazu gibt es auch Auswertungen von großen Portalen und Suchmaschinen.</p><p>Doch wie beschleunigt man die eigene Webseite? Häufig übersieht man einen wichtigen Teil: Das Frontend bzw. den Client.</p><p>Mag das PHP-Script auch sehr schnell sein (die Zeit gemessen mit microtime() ergibt 0.1 Sekunden), die Seite kann sich trotzdem langsam anfühlen. Das liegt häufig an vielen externen Dateien, die der Browser noch nachladen muss. Dazu gehören sowohl CSS-Dateien, Javascript-Dateien, Bilder usw.</p><p><span id="more-341"></span>Nachdem der Browser den kompletten HTML-Inhalt empfangen hat, fängt er an, ihn zu parsen. Falls er dabei auf externe Dateien stößt, lädt er sie nach. Nehmen wir mal folgendes Beispiel:</p><pre class="brush: xml; title: ; notranslate">&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;Testpage 1&lt;/title&gt;

	&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot;&gt;
	&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/custom.css&quot;&gt;
	&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/calendar.css&quot; media=&quot;screen&quot;&gt;

	&lt;script type=&quot;text/javascript&quot; src=&quot;js/custom/helpLayer.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;js/custom/filterRewriteUrl.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;js/custom/other.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;js/firebug_for_ie/firebug-lite-compressed.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;js/wz_tooltip/wz_tooltip.js&quot;&gt;&lt;/script&gt;
	Just a testpage
&lt;/body&gt;
&lt;/html&gt;</pre><p>Es werden also 3 css-Dateien und 5 js-Dateien nachgeladen. Grafisch dargestellt (mit dem Firefox Addon Firebug) sieht das dann so aus (man beachte: das ist localhost, durchs Internet wären die Verzögerungen noch etwas größer bei jedem Request):</p><p><img class="alignnone size-full wp-image-346" title="firebug1a" src="http://www.phpgangsta.de/wp-content/uploads/firebug1a.JPG" alt="firebug1a" width="717" height="247" /></p><p>Man kann schön erkennen, dass die css-Dateien parallel bearbeitet werden. Die Javascript-Dateien werden nacheinander geladen, da es ja Abhängigkeiten geben könnte und die Reihenfolge wichtig ist.</p><p>Nun kann man natürlich erstmal die unnötigen Dateien entfernen. Da ich das Tooltip-Script nicht brauche (und es sowieso unschön ist, es im body aufzurufen, aber das muss so bei diesem Script), entferne ich es, und erhalte dann:</p><p><img class="alignnone size-full wp-image-344" title="firebug2" src="http://www.phpgangsta.de/wp-content/uploads/firebug2.JPG" alt="firebug2" width="735" height="234" /></p><p>Wir haben also 31KB gespart und auch 15% der Ladezeit.</p><p>Nun fassen wir die css-Dateien und js-Dateien zusammen mittels PHP, das sieht dann so aus:</p><pre class="brush: xml; title: ; notranslate">&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;Testpage 3&lt;/title&gt;

	&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/css.php&quot;&gt;

	&lt;script type=&quot;text/javascript&quot; src=&quot;js/js.php&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	Just a testpage
&lt;/body&gt;
&lt;/html&gt;</pre><pre class="brush: php; title: ; notranslate">&lt;?php
header('Content-type: text/javascript');

$output  = file_get_contents('custom/helpLayer.js');
$output .= file_get_contents('custom/filterRewriteUrl.js');
$output .= file_get_contents('custom/other.js');
$output .= file_get_contents('firebug_for_ie/firebug-lite-compressed.js');

// remove comments from JS (this can cause problems if brackets
// or semikolons are not used correctly)
#$output = preg_replace('#//.*#', '', $output);
#$output = preg_replace('#\n|\r\n|\r|\t#', '', $output);

echo $output;</pre><pre class="brush: php; title: ; notranslate">&lt;?php
header(&quot;Content-Type: text/css&quot;);

$output =  file_get_contents('css/style.css');
$output .= file_get_contents('css/custom.css');

echo $output;</pre><p>Man sieht auf den ersten Blick: Wir haben nur noch 2 externe Dateien eingebunden. Wie sieht die Ladezeit aus?</p><p><img class="alignnone size-full wp-image-345" title="firebug4" src="http://www.phpgangsta.de/wp-content/uploads/firebug4.JPG" alt="firebug4" width="726" height="145" /></p><p>Wir haben also, ohne irgendeine Funktionalität zu ändern oder js-Dateien manuell zusammenfassen zu müssen die Hälfte der Zeit gespart (von 407ms auf 190ms). Ein PHP-Script von 400ms auf 200ms zu beschleunigen ist mehr Arbeit glaube ich <img src='http://www.phpgangsta.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p><p>Was lernen wir daraus? So wenig externe Dateien wie möglich laden oder sie zusammenfassen, um die Anzahl der HTTP-Request zu vermindern. Es gibt noch weitere Tricks, die ich aber noch nie produktiv eingesetzt habe. In hoch produktiven Webseiten kann das aber vielleicht Sinn machen, hier eine SEHR GUTE Präsentation zu dem ganzen Thema, die man sich angucken MUSS als Webentwickler:</p><div id="__ss_1879760" style="width: 425px; text-align: left;"><a style="font: 14px Helvetica,Arial,Sans-serif; display: block; margin: 12px 0 3px 0; text-decoration: underline;" title="Don't make me wait! or Building High-Performance Web Applications" href="http://www.slideshare.net/stoyan/dont-make-me-wait-or-building-highperformance-web-applications">Don&#8217;t make me wait! or Building High-Performance Web Applications</a><object style="margin: 0px;" width="425" height="355" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=hiperf-ebay-090819012708-phpapp01&amp;stripped_title=dont-make-me-wait-or-building-highperformance-web-applications" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><embed style="margin: 0px;" width="425" height="355" type="application/x-shockwave-flash" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=hiperf-ebay-090819012708-phpapp01&amp;stripped_title=dont-make-me-wait-or-building-highperformance-web-applications" allowFullScreen="true" allowScriptAccess="always" allowfullscreen="true" allowscriptaccess="always" /></object></div> <br/><br/><p>Keine ähnlichen Artikel.</p>]]></content:encoded> <wfw:commentRss>http://www.phpgangsta.de/externe-javascript-dateien-zusammenfassen/feed</wfw:commentRss> <slash:comments>26</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: basic
Database Caching 1/10 queries in 0.009 seconds using disk: basic
Object Caching 531/544 objects using disk: basic

Served from: www.phpgangsta.de @ 2012-02-08 00:12:07 -->
