<?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>Magento design, development and suport :: sonassi &#187; PHP</title>
	<atom:link href="http://www.sonassi.com/category/knowledge-base/php-knowledge-base/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sonassi.com</link>
	<description>Latest press releases, tutorials and thoughts on the world can be found here</description>
	<lastBuildDate>Wed, 18 Jan 2012 14:06:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>PHP: Combine and compile CSS and JS into Gzipped files</title>
		<link>http://www.sonassi.com/knowledge-base/combine-and-compile-css-and-js-into-gzipped-files/</link>
		<comments>http://www.sonassi.com/knowledge-base/combine-and-compile-css-and-js-into-gzipped-files/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 22:07:04 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Knowledge Base]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[combine]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css and javascript combinator 0.5]]></category>
		<category><![CDATA[decrease load times]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[rakaz]]></category>
		<category><![CDATA[reduce file size javascript]]></category>
		<guid isPermaLink="false">http://www.sonassi.com/blog/?p=249</guid>
		<description><![CDATA[This has actually been the secret behind a lot of our great system performance, but as it was open source originally, it&#8217;s going back to the people. Its a relatively straightforward script and speeds up JS and CSS performance by &#8230; <a href="http://www.sonassi.com/knowledge-base/combine-and-compile-css-and-js-into-gzipped-files/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This has actually been the secret behind a lot of our great system performance, but as it was open source originally, it&#8217;s going back to the people. Its a relatively straightforward script and speeds up JS and CSS performance by a huge amount, especially if you are using multiple files (like we do!).</p>
<p><strong>It should be noted that the compression and combining engine is standard on all hosting accounts &#8211; just skip straight to step 5.</strong></p>
<p>The red settings represent paths that need to be set dependant on where you put the files.</p>
<p>It is based on the combine script by Rakaz (http://rakaz.nl/item/make_your_pages_load_faster_by_combining_and_compressing_javascript_and_css_files), but there were notable flaws in that version.</p>
<ul>
<li>gZip encoding was not handled correctly by the browser</li>
<li>cache files build up (requires cron to remove routinely)</li>
<li>content echo&#8217;ing and incorrect headers causing slowdowns</li>
</ul>
<p>Our version is about 100-200% faster than the original build, we thank Rakaz for giving us the chance to build it.</p>
<p>New features include:</p>
<ul>
<li>automatic update of cache files when a file has been changed</li>
<li>automatic generation of gzipped and non gzipped files (for browsers which do not support gzip)</li>
<li>optimised headers</li>
<li>independent JavaScript library support</li>
<li>no CPU overhead of gzipping on the fly as the gzipped version is permanently stored the first time a visitor hits a page which hasn&#8217;t been cached</li>
</ul>
<p><strong>Get a feel for the difference here:</strong></p>
<a href='http://www.sonassi.com/knowledge-base/combine-and-compile-css-and-js-into-gzipped-files/attachment/gzipped/' title='gzipped'><img width="150" height="150" src="http://www.sonassi.com/wp-content/uploads/2009/06/gzipped1-150x150.png" class="attachment-thumbnail" alt="gzipped" title="gzipped" /></a>
<a href='http://www.sonassi.com/knowledge-base/combine-and-compile-css-and-js-into-gzipped-files/attachment/non-gzipped/' title='non-gzipped'><img width="150" height="150" src="http://www.sonassi.com/wp-content/uploads/2009/06/non-gzipped1-150x150.png" class="attachment-thumbnail" alt="non-gzipped" title="non-gzipped" /></a>
<p><strong>(left) gZipped JavaScript includes: <a href="http://www.sonassi.com/">http://www.sonassi.com/index/</a></strong></p>
<p><strong>(right) Non-gzip JavaScript includes: <a href="http://www.sonassi.com/index-dummy.php">http://www.sonassi.com/index-dummy/</a></strong></p>
<h2>Lets get going then</h2>
<p><strong>Pre-requisites:</strong></p>
<p><strong>Enable mod_rewrite</strong></p>
<pre># a2enmod rewrite
# apache2ctl restart</pre>
<p><strong>And mod_expires<br />
</strong></p>
<pre># a2enmod expires
# apache2ctl restart</pre>
<p><strong>And mod_deflate</strong></p>
<pre># a2enmod deflate
# apache2ctl restart</pre>
<p><strong>You need to edit a few files for the next stage:</strong></p>
<p>apache2.conf<br />
.htaccess<br />
combine-gzip.inc.php</p>
<p><strong>1 ) In the apache2.conf or .htaccess, add the following lines</strong></p>
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">RewriteRule ^<span style="color: #339933;">/</span>gzipjs<span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">.*.</span>js<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;color: #ff0000;&quot;</span><span style="color: #339933;">&gt;/</span>data<span style="color: #339933;">/</span>lib<span style="color: #339933;">/</span>php<span style="color: #339933;">/</span>combine<span style="color: #339933;">-</span>gzip<span style="color: #339933;">.</span>inc<span style="color: #339933;">.</span>php<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;</span>?type<span style="color: #339933;">=</span>javascript<span style="color: #339933;">&amp;</span>encoding<span style="color: #339933;">=</span>gzip<span style="color: #339933;">&amp;</span>files<span style="color: #339933;">=</span>$<span style="color:#800080;">1</span>
RewriteRule ^<span style="color: #339933;">/</span>gzipcss<span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">.*.</span>css<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;color: #ff0000;&quot;</span><span style="color: #339933;">&gt;/</span>data<span style="color: #339933;">/</span>lib<span style="color: #339933;">/</span>php<span style="color: #339933;">/</span>combine<span style="color: #339933;">-</span>gzip<span style="color: #339933;">.</span>inc<span style="color: #339933;">.</span>php<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;</span>?type<span style="color: #339933;">=</span>css<span style="color: #339933;">&amp;</span>encoding<span style="color: #339933;">=</span>gzip<span style="color: #339933;">&amp;</span>files<span style="color: #339933;">=</span>$<span style="color:#800080;">1</span>
&nbsp;
<span style="color: #339933;">&lt;</span>FilesMatch <span style="color: #0000ff;">&quot;.combine-cache.gzip$&quot;</span><span style="color: #339933;">&gt;</span>
  RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>HTTP_USER_AGENT<span style="color: #009900;">&#125;</span> <span style="color: #339933;">..*</span>Safari<span style="color: #339933;">.*.</span> <span style="color: #009900;">&#91;</span>OR<span style="color: #009900;">&#93;</span>
  RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>HTTP<span style="color: #339933;">:</span>Accept<span style="color: #339933;">-</span>Encoding<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!</span>gzip
  RewriteRule <span style="color: #009900;">&#40;</span><span style="color: #339933;">.*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>combine<span style="color: #339933;">-</span>cache<span style="color: #339933;">.</span>gzip$ $<span style="color:#800080;">1</span><span style="color: #339933;">.</span>combine<span style="color: #339933;">-</span>cache <span style="color: #009900;">&#91;</span>L<span style="color: #009900;">&#93;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">#AddType &quot;text/plain&quot; .gzip
</span>  AddEncoding gzip <span style="color: #339933;">.</span>gzip
<span style="color: #339933;">&lt;/</span>FilesMatch<span style="color: #339933;">&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;</span>IfModule mod_deflate<span style="color: #339933;">.</span>c<span style="color: #339933;">&gt;</span>
  SetEnvIfNoCase Request_URI
    <span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span>?<span style="color: #339933;">:</span>exe<span style="color: #339933;">|</span>t?gz<span style="color: #339933;">|</span>zip<span style="color: #339933;">|</span>bz2<span style="color: #339933;">|</span>sit<span style="color: #339933;">|</span>rar<span style="color: #339933;">|&lt;</span>strong<span style="color: #339933;">&gt;</span>gzip<span style="color: #339933;">&lt;/</span>strong<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#41;</span>$
    no<span style="color: #339933;">-</span>gzip dont<span style="color: #339933;">-</span>vary
<span style="color: #339933;">&lt;/</span>IfModule<span style="color: #339933;">&gt;</span></pre></div></div>
<p><strong>2 ) For a spot of extra performance, </strong><strong>enable mod_expires, and enter this into your apache conf</strong></p>
<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">&lt;IfModule mod_expires.c&gt;
  ExpiresActive On
  ExpiresDefault A300
  ExpiresByType text/html A7200
  ExpiresByType text/javascript A604800
  ExpiresByType application/x-javascript A604800
  ExpiresByType text/css A604800
  ExpiresByType image/x-icon A31536000
  ExpiresByType image/gif A604800
  ExpiresByType image/jpg A604800
  ExpiresByType image/jpeg A604800
  ExpiresByType image/png A604800
  ExpiresByType text/plain A604800
&lt;/IfModule&gt;</pre></div></div>
<p><strong>3) Then create the cache directory in your document_root<br />
</strong></p>
<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># cd &lt;span style=&quot;color: #ff0000;&quot;&gt;DOCROOT&lt;/span&gt;
# mkdir ./cache
# chmod 775 ./cache</pre></div></div>
<p><strong>4) Create the combine-gzip.inc.php, with the following content</strong></p>
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">/************************************************************************
   * CSS and Javascript Combinator 0.5 + SMS gZip patch
   * Original Author
   * http://rakaz.nl/item/make_your_pages_load_faster_by_combining_and_compressing_javascript_and_css_files
   * gZip patch by Sonassi Media Services (www.sonassi.com)
   */</span>
&nbsp;
  <span style="color: #000088;">$cache</span>    <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$encoding</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'none'</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$cachedir</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;color: #ff0000;&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'DOCUMENT_ROOT'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;.</span> <span style="color: #0000ff;">'cache'</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$cssdir</span>   <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;color: #ff0000;&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'DOCUMENT_ROOT'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;.</span> <span style="color: #0000ff;">'css'</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$jsdir</span>    <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;color: #ff0000;&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'DOCUMENT_ROOT'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'js'</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$allowed_encoding</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'none'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'gzip'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'deflate'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$js_library</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;span style=&quot;color: #ff0000;&quot;&gt;/data/lib/js&lt;/span&gt;'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># No trailing slash
</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'encoding'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'encoding'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000088;">$allowed_encoding</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000088;">$encoding</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'encoding'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Determine the directory and type we should use</span>
  <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'type'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'css'</span><span style="color: #339933;">:</span>
      <span style="color: #000088;">$base</span> <span style="color: #339933;">=</span> <span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cssdir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'javascript'</span><span style="color: #339933;">:</span>
      <span style="color: #000088;">$base</span> <span style="color: #339933;">=</span> <span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$jsdir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
      <span style="color: #990000;">header</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.0 503 Not Implemented&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000088;">$type</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'type'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$elements</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'files'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Determine last modification date of the files</span>
  <span style="color: #000088;">$lastmodified</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">,</span><span style="color: #000088;">$element</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">each</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$elements</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$element</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'/lib/'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$element</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/lib'</span><span style="color: #339933;">,</span><span style="color: #000088;">$js_library</span><span style="color: #339933;">,</span><span style="color: #000088;">$element</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$element</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$base</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$element</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000088;">$path</span> <span style="color: #339933;">=</span> <span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$element</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$type</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'javascript'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'.js'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span>
      <span style="color: #009900;">&#40;</span><span style="color: #000088;">$type</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'css'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'.css'</span> <span style="color: #339933;">&amp;&amp;</span>
      <span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$base</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$base</span> <span style="color: #339933;">||</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$js_library</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
      <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #990000;">header</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.0 403 Forbidden&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #990000;">header</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.0 404 Not Found&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000088;">$lastmodified</span> <span style="color: #339933;">=</span> <span style="color: #990000;">max</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lastmodified</span><span style="color: #339933;">,</span> <span style="color: #990000;">filemtime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Send Etag hash</span>
  <span style="color: #000088;">$mhash</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'files'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$hash</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$lastmodified</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'-'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$mhash</span><span style="color: #339933;">;</span>
  <span style="color: #990000;">header</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Etag: &quot;</span><span style="color: #0000ff;">&quot; . <span style="color: #006699; font-weight: bold;">$hash</span> . &quot;</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_IF_NONE_MATCH'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>
    <span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_IF_NONE_MATCH'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'&quot;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$hash</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot;'</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Return visit and no modifications, so do not send anything</span>
    <span style="color: #990000;">header</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.0 304 Not Modified&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">header</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-Length: 0'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">else</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// First time visit or files were modified</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// Determine supported compression method</span>
      <span style="color: #000088;">$gzip</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_ACCEPT_ENCODING'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'gzip'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$deflate</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_ACCEPT_ENCODING'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'deflate'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Determine used compression method</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$encoding</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'none'</span><span style="color: #009900;">&#41;</span>
        <span style="color: #000088;">$encoding</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$gzip</span> ? <span style="color: #0000ff;">'gzip'</span> <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$deflate</span> ? <span style="color: #0000ff;">'deflate'</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'none'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Check for buggy versions of Internet Explorer</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_USER_AGENT'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Opera'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>
        <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^Mozilla/4.0 (compatible; MSIE ([0-9].[0-9])/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_USER_AGENT'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$version</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$version</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span>
          <span style="color: #000088;">$encoding</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'none'</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$version</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">6</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_USER_AGENT'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'EV1'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
          <span style="color: #000088;">$encoding</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'none'</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Try the cache first to see if the combined files were already generated</span>
      <span style="color: #000088;">$plaincachefile</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'cache-'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$hash</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$type</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'.combine-cache'</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$cachefile</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$plaincachefile</span> <span style="color: #339933;">.</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$encoding</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'none'</span> ? <span style="color: #0000ff;">'.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$encoding</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachedir</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$cachefile</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$encoding</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'gzip'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.1 301 Moved Permanently&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Cache-Control: access plus 7 days&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: /cache/<span style="color: #006699; font-weight: bold;">$cachefile</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Connection: close&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.1 301 Moved Permanently&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Cache-Control: access plus 7 days&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: /cache/<span style="color: #006699; font-weight: bold;">$plaincachefile</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Connection: close&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Get contents of the files</span>
    <span style="color: #000088;">$contents</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">reset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$elements</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">,</span><span style="color: #000088;">$element</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">each</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$elements</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$element</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'/lib/'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$element</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/lib'</span><span style="color: #339933;">,</span><span style="color: #000088;">$js_library</span><span style="color: #339933;">,</span><span style="color: #000088;">$element</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$element</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$base</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$element</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #000088;">$path</span> <span style="color: #339933;">=</span> <span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$element</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$contents</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;nn&quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Send Content-Type</span>
    <span style="color: #990000;">header</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type: text/&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$type</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Store cache</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$encoding</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'none'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$gcontents</span> <span style="color: #339933;">=</span> <span style="color: #990000;">gzencode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/*nGZIPPED <span style="color: #006699; font-weight: bold;">$mhashn</span>*/&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$contents</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">9</span><span style="color: #339933;">,</span> <span style="color: #000088;">$gzip</span> ? FORCE_GZIP <span style="color: #339933;">:</span> FORCE_DEFLATE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachedir</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$cachefile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'wb'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$gcontents</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachedir</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$plaincachefile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'wb'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$contents</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">glob</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachedir</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/&quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;*&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$type</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.combine-cache*&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #339933;">,</span><span style="color: #000088;">$mhash</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #339933;">,</span><span style="color: #000088;">$cachefile</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #339933;">,</span><span style="color: #000088;">$plaincachefile</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
          <span style="color: #339933;">@</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$encoding</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'gzip'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.1 301 Moved Permanently&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: /cache/<span style="color: #006699; font-weight: bold;">$cachefile</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Connection: close&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.1 301 Moved Permanently&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: /cache/<span style="color: #006699; font-weight: bold;">$plaincachefile</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Connection: close&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>
<p><strong>5) Add the path into your tags with comma separated values, Eg.</strong></p>
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;start-tag&quot;</span><span style="color: #339933;">&gt;</span>link<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-name&quot;</span><span style="color: #339933;">&gt;</span> rel<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-value&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #0000ff;">&quot;stylesheet&quot;</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-name&quot;</span><span style="color: #339933;">&gt;</span>type<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-value&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #0000ff;">&quot;text/css&quot;</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-name&quot;</span><span style="color: #339933;">&gt;</span>href<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-value&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #0000ff;">&quot;/gzipcss/style.css,nav.css,blog.css&quot;</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-name&quot;</span><span style="color: #339933;">&gt;</span>title<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-value&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #0000ff;">&quot;default&quot;</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;error&quot;</span><span style="color: #339933;">&gt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-name&quot;</span><span style="color: #339933;">&gt;/&lt;/</span>span<span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;&gt;</span>
<span style="color: #339933;">&lt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;start-tag&quot;</span><span style="color: #339933;">&gt;</span>script<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-name&quot;</span><span style="color: #339933;">&gt;</span> type<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-value&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #0000ff;">&quot;text/javascript&quot;</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-name&quot;</span><span style="color: #339933;">&gt;</span>src<span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;attribute-value&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #0000ff;">&quot;/gzipjs//lib/jquery.min.js,boss-site-search.js,/lib/superfish.js&quot;</span> <span style="color: #339933;">/&gt;&lt;/</span>span<span style="color: #339933;">&gt;</span></pre></div></div>
<p>Then sit back and relax enjoying your MASSIVELY reduced bandwidth and CPU overheads.</p>
<p><strong>For examples of this script in use, check out any page of our website</strong> <strong>at <a href="http://www.sonassi.com">www.sonassi.com</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonassi.com/knowledge-base/combine-and-compile-css-and-js-into-gzipped-files/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk (enhanced)
Database Caching 30/35 queries in 0.025 seconds using disk
Object Caching 2790/2793 objects using disk

Served from: www.sonassi.com @ 2012-02-11 01:47:51 -->
