<?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>opensourcetutor.com &#187; optimization</title>
	<atom:link href="http://www.opensourcetutor.com/tag/optimization/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.opensourcetutor.com</link>
	<description>On Linux, Web Development, Joomla and Magento commerce</description>
	<lastBuildDate>Sat, 04 Feb 2012 10:27:38 +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>How to compress css &amp; javascript: An alternative to mod_deflate or mod_gzip</title>
		<link>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/</link>
		<comments>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 07:35:27 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[mod_deflate]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[yslow]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/</guid>
		<description><![CDATA[



So, you have used Website Optimization Analyzer or you installed Yslow for Firefox or you discovered somewhere else that compressing your files (html, javascript &#38; css) is a good thing to do. Unfortunately, it&#8217;s not always as easy as it looks to do this.
In Apache web hosting environments, there is a module called mod_deflate (for 2.x versions) or mod_gzip (for 1.3) versions. This is generally the easiest way to get content compressed. As in my last post about Magento, you should normally be able to enable this safely with the ...]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9469051832075629";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text";
//2007-05-22: opensourcetutor.com
google_ad_channel = "3549963802";
google_color_border = "FFF";
google_color_bg = "FFF";
google_color_link = "333";
google_color_text = "CCCCCC";
google_color_url = "999999";
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>So, you have used <a href="http://www.websiteoptimization.com/services/analyze/" target="_blank">Website Optimization Analyzer</a> or you installed <a href="https://addons.mozilla.org/en-US/firefox/addon/5369" target="_blank">Yslow for Firefox</a> or you discovered somewhere else that compressing your files (html, javascript &amp; css) is a good thing to do. Unfortunately, it&#8217;s not always as easy as it looks to do this.</p>
<p>In Apache web hosting environments, there is a module called mod_deflate (for 2.x versions) or mod_gzip (for 1.3) versions. This is generally the easiest way to get content compressed. As in my <a href="http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento-ecommerce/" target="_blank">last post about Magento</a>, you should normally be able to enable this safely with the following lines inside your .htaccess file in your www root of your website:</p>
<p><code>&lt;ifmodule mod_deflate.c&gt;<br />
    # Insert filter<br />
    SetOutputFilter DEFLATE<br />
    # Netscape 4.x has some problems...<br />
    BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
    # Netscape 4.06-4.08 have some more problems<br />
    BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
    # MSIE masquerades as Netscape, but it is fine<br />
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
    # Don't compress images<br />
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
    # Make sure proxies don't deliver the wrong content<br />
    Header append Vary User-Agent env=!dont-vary<br />
&lt;/ifmodule&gt;</code></p>
<p>Then visit your website and in your browser right-click on the web page and choose &#8220;View Source&#8221;. In the source code, try and find a line that contains your stylesheet, then we go to <a href="http://www.whatsmyip.org/http_compression/" target="_blank">whatsmyip compression checker</a> and we enter the whole URL to your stylesheet there. To test, enter my css url.</p>
<p><code>http://www.opensourcetutor.com/wp-content/themes/hemingwayEx/style.css</code></p>
<p>You should see a big green tick and the site will say the CSS is compressed. Now, if you don&#8217;t, you either haven&#8217;t applied my above .htaccess settings yet or mod_deflate is not enabled on your server for you to access.</p>
<h2>Alternative #1 &#8211; requires Apache mod_rewrite</h2>
<p>This method is probably the best method I have seen to overcome the mod_deflate issue and we are only concerned about javascript and css files for now. PHP has an easy method to compress php files on the fly. What we need to do is gzip all our javascript &amp; css files.</p>
<p>If you have shell access, you can run this command to take of the job for you. It will find each and every javascript file and css file and create a gzip copy.</p>
<p><code>find . -regex ".*\(css\|js\)$" -exec bash -c 'echo Compressing "{}" &amp;amp;&amp;amp; gzip -c --best "{}" &gt; "{}.gz"' \;</code></p>
<p>The line above searches the current directory and any subdirectories for files with extensions .js or .css, then prints out that it is being compressed, then compresses with the highest compression in that directory leaving the original file as is.</p>
<p>Now, we need to tell our browser to access the gzip version *IF* it supports gzip encoding. To do this, we use the following in our .htaccess file. Make sure you have removed the above code if it wasn&#8217;t successful.</p>
<pre>
<code>&lt;files *.js.gz&gt;
  AddType "text/javascript" .gz
  AddEncoding gzip .gz
&lt;/files&gt;
&lt;files *.css.gz&gt;
  AddType "text/css" .gz
  AddEncoding gzip .gz
&lt;/files&gt;
RewriteEngine on
#Check to see if browser can accept gzip files.
ReWriteCond %{HTTP:accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
#make sure there's no trailing .gz on the url
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$
#check to see if a .gz version of the file exists.
RewriteCond %{REQUEST_FILENAME}.gz -f
#All conditions met so add .gz to URL filename (invisibly)
RewriteRule ^(.+) $1.gz [QSA,L] </code>
</pre>
<p>The advantage of this Alternative is that our server doesn&#8217;t have to gzip / compress the javascript and css each time it is called. This eases the load up on the server as we already do the compression one time and then just call the compressed version from then after. The other advantage is that we don&#8217;t need to load up mod_deflate each time. This could be advantages if you are running a VPS with very low memory available.</p>
<p>If you have a static website, you could apply the same technique for all your html files. To do so, you would instead use this line:</p>
<p><code>find . -regex ".*\(html\|css\|js\)$" -exec bash -c 'echo Compressing "{}" &amp;amp;&amp;amp; gzip -c --best "{}" &gt; "{}.gz"' \;</code></p>
<p>and then add this into your .htaccess also</p>
<pre>
<code>&lt;files *.html.gz&gt;
  AddType "text/html" .gz
  AddEncoding gzip .gz
&lt;/files&gt;</code>
</pre>
<p><script type="text/javascript"><!--
google_ad_client = "pub-9469051832075629";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text";
//2007-05-22: opensourcetutor.com
google_ad_channel = "3549963802";
google_color_border = "FFF";
google_color_bg = "FFF";
google_color_link = "333";
google_color_text = "CCCCCC";
google_color_url = "999999";
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>
Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/apache" rel="tag">apache</a>, <a class="performancingtags" href="http://technorati.com/tag/gzip" rel="tag">gzip</a>, <a class="performancingtags" href="http://technorati.com/tag/mod_deflate" rel="tag">mod_deflate</a>, <a class="performancingtags" href="http://technorati.com/tag/compression" rel="tag">compression</a>, <a class="performancingtags" href="http://technorati.com/tag/yslow" rel="tag">yslow</a>, <a class="performancingtags" href="http://technorati.com/tag/firefox" rel="tag">firefox</a>, <a class="performancingtags" href="http://technorati.com/tag/optimization" rel="tag">optimization</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>How to Speed up Magento</title>
		<link>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/</link>
		<comments>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 08:27:30 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Ecommerce]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/?p=172</guid>
		<description><![CDATA[Having implemented a number of websites now in Magento and being the web hosting provider for them also, it&#8217;s been both challenging and rewarding trying to get Magento running at an acceptable speed.People generally don&#8217;t understand what&#8217;s happening when they say &#8220;my website is slow&#8221;. So, for those of you unfamiliar with benchmarking / understanding what factors to consider when a page loads from a server, we have quite a number of variables.

Your URL you type into a browser, translates to an IP address &#8211; this check should take a ...]]></description>
			<content:encoded><![CDATA[<p>Having implemented a number of websites now in Magento and being the <a href="http://www.serverspacesolutions.com.au/" target="_blank">web hosting provider</a> for them also, it&#8217;s been both challenging and rewarding trying to get Magento running at an acceptable speed.People generally don&#8217;t understand what&#8217;s happening when they say &#8220;my website is slow&#8221;. So, for those of you unfamiliar with benchmarking / understanding what factors to consider when a page loads from a server, we have quite a number of variables.</p>
<ol>
<li>Your URL you type into a browser, translates to an IP address &#8211; this check should take a very, very short time</li>
<li>Your browser then begins to access the web server where your website is hosted to ask for the page you want, this can cause some delay, typically 40-200ms (bottleneck 1.)</li>
<li>In the case of Magento,it uses PHP as the software language that runs the site, so the php begins to execute (bottleneck 2.)</li>
<li>PHP then reaches a part of it&#8217;s code it needs to access the database to retrieve website data and sometimes insert information about who you are. (bottleneck 3.)</li>
<li>The PHP code retrieves the information, does a bit more computing on it (for simplicity, this is still bottleneck 2) and then sends it to your web server</li>
<li>Your webserver can then send it or compress it and then send it to you (bottlneck 4)</li>
<li>The data is sent over the internet to your browser (bottlneck 5)</li>
<li>Your browser must &#8216;render&#8217; the data it receives into an actual web page (bottleneck 6)</li>
</ol>
<p>I will assume you are here specifically for Magento issues, so let&#8217;s get started with the basics. I will make the assumption that your web server is running Apache and you have very little control over that.</p>
<h3>Preparation &#8211; the &#8220;before&#8221;</h3>
<ol>
<li>If you are familiar with the, use <a target="_blank" href="http://www.mozilla.com/">Firefox</a> and the <a target="_blank" href="http://www.getfirebug.com/">Firebug extension</a> and the <a target="_blank" href="http://developer.yahoo.com/yslow/">Yslow extension</a>. Take a screenshot of your statistics.
</li>
<li>Alternatively, what I suggest is to go to <a href="http://analyze.websiteoptimization.com/">WebsiteOptimization</a> if you&#8217;re fairly new to this. You basically enter your URL and click. Print out the page, preferably to PDF before we begin.</li>
</ol>
<h3>Check Magento Caching is turned on (if not developing still)</h3>
<ol>
<li>Login to your Magento Admin</li>
<li>go to System -> Cache Management</li>
<li>in the dropdown box, choose &#8220;enable&#8221; and tick all the boxes, then save settings.</li>
</ol>
<h3>Let&#8217;s start simple &#8211; .htaccess and gzip/deflate<br />
</h3>
<ol>
<li>Go to <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a> and enter your magento site address. If it comes back with a big green tick and says http://yourmagentosite.com is gzipped, then you&#8217;re in business and skip step 2. If not..go to step 2
</li>
<li>Using ftp or ssh, however you access your magento website, go to the root of the site and find your .htaccess file. Scroll down until you see something like:</li>
<p><code>&lt;ifmodule mod_deflate.c&gt;<br />
    # Insert filter<br />
    SetOutputFilter DEFLATE<br />
    # Netscape 4.x has some problems...<br />
    #BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
    # Netscape 4.06-4.08 have some more problems<br />
    BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
    # MSIE masquerades as Netscape, but it is fine<br />
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
    # Don't compress images<br />
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
    # Make sure proxies don't deliver the wrong content<br />
    Header append Vary User-Agent env=!dont-vary<br />
&lt;/ifmodule&gt;</code></p>
<li>Make sure it looks like above. A hash in front of the line means it&#8217;s commented out. If your .htaccess file does look like this AND <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a> is still not showing enabled, you need to talk to your web hosting provider. They may not allow overrides or may not have the deflate module installed or enabled. If it doesn&#8217;t look like the above, remove the hashes from your lines so that it reflects what is above, then retest with <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a></li>
<li>Take a screenshot / pdf printout of Yslow / websiteoptimizer results. ;)
</li>
</ol>
<h3>Let&#8217;s shrink our javascript</h3>
<ol>
<li>Magento uses A LOT of LARGE javascript libraries and depending on your template, it&#8217;s a good chance that these make up for 50% of your website page size. This should only affect the first page load but it&#8217;s often the first impressions that count, so let&#8217;s shrink it.</li>
<li>For this, we will use the <a target="_blank" href="http://www.magentocommerce.com/extension/457/fooman-speedster">Fooman Speedster Extension</a> from magentoconnect. Click on the &#8220;get extension key&#8221; and then copy the key to your clipboard.</li>
<li>Now go to your magento store admin interface and click on &#8220;System -> Magento Connect -> Magento Connect Manager&#8221;. Enter your admin user/pass to access magento connect manager.
</li>
<li>*Warning &#8211; once you install the extension until you fix your .htaccess, it may break your website*</li>
<li>Paste the extension key to install the extension</li>
<li>Now go to your .htaccess and under the line: #RewriteBase /magento/ add this line
<p><code>RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&amp;amp;d=$2<br />
</code></li>
<li>Save your .htaccess and access your site (it may take a while to load the first time as it minifies and creates it&#8217;s cache.
</li>
<li>**Test your site is working properly**
</li>
<li>Take a screenshot / pdf printout of Yslow / websiteoptimizer results. ;)</li>
</ol>
<h3>Let&#8217;s check our php settings</h3>
<ol>
<li>Create a file called phpinfo.php and enter this information into it.</li>
<li>Check for the following: memory_limit</li>
<li>If it&#8217;s less than 128M, try and add an entry into your .htaccess like so:
</li>
<p><code>php_value memory_limit 128M</code></p>
</ol>
<h3>Finally, MySQL &#8211; for experienced users.<br />
</h3>
<ol>
<li>If you&#8217;re a mysql hero, you don&#8217;t need me to tell you how but we want to try and get the following settings in your my.cnf
</li>
<p><code>query_cache_type = 1<br />
query_cache_size = 32M<br />
query_cache_limit=2M</code></p>
<li>If you don&#8217;t have root access to check /etc/my.cnf (or /etc/mysql/my.cnf) variables, then login to mysql or use phpmyadmin to show variables.
</li>
<p><code>$ mysql -u mysqluser -p magento_database_name<br />
$ mysql&gt; SHOW VARIABLES;</code></p>
<li>If you don&#8217;t have control over your mysql configuration, go knocking on your Web Host&#8217;s support tickets to get them to modify it to suit you or if you&#8217;re in Australia, <a target="_blank" href="http://www.serverspacesolutions.com.au/">check us out</a>
</li>
</ol>
<p>**If you want someone to do this all for you, lodge a support ticket at <a target="_blank" href="https://www.yourwebhostingsupport.com/index.php?_m=tickets&amp;_a=submit">Yourwebhostingsupport</a> with the Subject &#8220;Magento Optimisation&#8221;</p>
<p><!--adsense#widelinks--></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/magento" rel="tag">magento</a>, <a class="performancingtags" href="http://technorati.com/tag/optimization" rel="tag">optimization</a>, <a class="performancingtags" href="http://technorati.com/tag/apache" rel="tag">apache</a>, <a class="performancingtags" href="http://technorati.com/tag/mysql" rel="tag">mysql</a>, <a class="performancingtags" href="http://technorati.com/tag/speed" rel="tag">speed</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

