<?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>Axel Jung &#187; performance</title>
	<atom:link href="http://www.ajung.de/tag/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajung.de</link>
	<description>Privater Blog von Axel Jung aus Wiesbaden</description>
	<lastBuildDate>Tue, 22 Nov 2011 21:13:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Ext: js_css_optimizer und t3lib_PageRenderer</title>
		<link>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/</link>
		<comments>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 18:55:40 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=539</guid>
		<description><![CDATA[In der neuen Typo3 Version 4.3 existiert eine neue Klasse t3lib_PageRenderer in der die CSS und Javascript Dateien registriert werden können. In dieser Klasse ist es vorgesehen die CSS Dateien zu bündeln und zu komprimieren. Da diese Funktionen noch nicht implementiert sind und es aber die Möglichkeit für Hooks gibt habe ich die Extension js_css_optimizer [...]]]></description>
			<content:encoded><![CDATA[<p>In der neuen Typo3 Version 4.3 existiert eine neue Klasse t3lib_PageRenderer in der die CSS und Javascript Dateien registriert werden können. In dieser Klasse ist es vorgesehen die CSS Dateien zu <strong>bündeln </strong>und zu <strong>komprimieren</strong>. Da diese Funktionen noch nicht implementiert sind und es aber die Möglichkeit für Hooks gibt habe ich die Extension <strong>js_css_optimizer </strong>erstellt, die diese Lücke füllt.</p>
<p>Die Extension registriert folgende Hooks:</p>
<ul>
<li>cssCompressHandler &#8211; zum Komprimieren der CSS Dateien</li>
<li>jsCompressHandler &#8211; zum Komprimieren der JavaScript Dateien</li>
<li>concatenateHandler &#8211; zum Bündeln der Dateien</li>
<li>clearCachePostProc &#8211; zum Löschen der gecachten Dateien im typo3temp Verzeichnis</li>
</ul>
<h3>CSS Komrpimierung</h3>
<p>Hierbei wird das Tool <a href="http://csstidy.sourceforge.net/">CSSTidy</a> verwendet.  Die Konfiguration lässt sich über den Extension Manager in Typo3 einstellen.</p>
<p><img class="alignnone size-full wp-image-540" title="js_opt" src="http://www.ajung.de/wp-content/uploads/2009/10/js_opt.png" alt="js_opt" width="336" height="347" /></p>
<p>Die CSS Datei wird in einem neuen Verzeichnis abgelegt. Die Extension versucht dabei die relativen Pfade in der CSS Datei auf Bilder um zuschreiben. Hier ist eventuell noch Anpassungbedarf.</p>
<p>Damit die CSS Datei komprimiert wird muss folgender Typo Script Code ergänzt werden:</p>
<pre>page {
includeCSS {
 screenStyle = ..../base.css
 screenStyle {
   media = screen
   import = 0
   <span style="color: #ff0000;">compress=1</span>
 }</pre>
<h3>JavaScript Komprimierung</h3>
<p>Für das JavaScript wird die <a href="http://www.crockford.com/javascript/jsmin.html">JSMin</a> Klasse aus dem Typo3 Core verwendet. Es wird nicht die t3lib::minify&#8230; verwendet, da diese nicht so effektiv ist.</p>
<p>In TypoScript kann die Komprimierung einzeln ein und ausgeschaltet werden:</p>
<pre>page{
 includeJS {
 file1 = ....common.js
 file1.<span style="color: #ff0000;">compress=1</span>
...</pre>
<h3>Bündelung</h3>
<p>Die Bündelung der Javascripte und CSS Dateien kann über TypoScript aktiviert werden.  Dafür gibt es diese Einstellung:</p>
<pre>config.concatenateJsAndCss = 1</pre>
<p>Hierbei ist nicht möglich CSS und JavaScript unterschiedlich zu behandeln. Deshalb gibt es in der Extension die Möglichkeit über den Extension Manager die Bündelung beispielsweise für CSS auszuschalten.</p>
<p><img class="alignnone size-full wp-image-541" title="js_opt_1" src="http://www.ajung.de/wp-content/uploads/2009/10/js_opt_1.png" alt="js_opt_1" width="192" height="125" /></p>
<p>Wenn bestimmte Dateien auf jeder Seite benötigt werden, dann macht es Sinn diese als Libs einzubinden. Dafür gibt es im TypoScript die Option includeJSlibs.</p>
<pre>page.includeJSlibs{
  jquery = ...jquery-1.3.2.min.js
  ...
}</pre>
<p>Dann werden die in eine separate Datei geschrieben und können vom Browser separat gecacht werden.</p>
<h3>Caching</h3>
<p>Die komprimierten und gebündelten Dateien werden in dem typo3Temp Verzeichnis abgelegt. Die Cache Datei werden nicht erneuert sondern müssen gelöscht werden um neu erzeugt zu werden. Das Löschen passiert automatisch wenn im Typo3 Backend der Cache gelöscht wird.</p>
<h3>Javascript und CSS aus den Plugins hinzufügen</h3>
<p>Wenn man früher in einem Plugin JavaScript oder CSS Daten hinzufügen wollte ohne TypoScript hat man das über $GLOBALS['TSFE']-&gt;additionalHeaderData machen. Da diese Daten nicht als JS oder CSS deklariert sind nutzen sie in diesen Kontext nichts mehr.  Man kann jetzt mittels $GLOBALS['TSFE']-&gt;getPageRenderer() auf den PageRenderer zugreifen und diesen die JS und CSS Dateien bekannt machen. Wenn man mit dem PageRenderer arbeitet kann man auch die Vorteile der Komprimierung und Bündelung nutzen. Es lohnt sich deshalb die Klasse t3lib_PageRenderer genauer anzuschauen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

