<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Kapil Uttam</title>
	<atom:link href="http://kapiluttam.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://kapiluttam.wordpress.com</link>
	<description>Every accomplishment starts with the decision to try.</description>
	<lastBuildDate>Mon, 04 Apr 2011 04:10:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='kapiluttam.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/c266ba15d3164689bbe85dc359953024?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Kapil Uttam</title>
		<link>http://kapiluttam.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://kapiluttam.wordpress.com/osd.xml" title="Kapil Uttam" />
	<atom:link rel='hub' href='http://kapiluttam.wordpress.com/?pushpress=hub'/>
		<item>
		<title>.htaccess file</title>
		<link>http://kapiluttam.wordpress.com/2009/12/16/htaccess-file/</link>
		<comments>http://kapiluttam.wordpress.com/2009/12/16/htaccess-file/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 18:00:09 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/?p=56</guid>
		<description><![CDATA[The Apache Web server provides a feature called .htaccess file, which provides commands to control a Web site. This file is simply a text file containing Apache directives. Those directives apply to the documents in the directory where the file is located, and to all subdirectories under it as well. Other .htaccess files in subdirectories [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=56&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="cont">
<p>The Apache Web server provides a feature called .htaccess file, which provides commands<br />
to control a Web site. This file is simply a text file containing Apache directives.<br />
Those directives apply to the documents in the directory where the file is located,<br />
and to all subdirectories under it as well. Other .htaccess files in subdirectories may change or<br />
nullify the effects of those in parent directories.</p>
<p>You have to be careful when editing .htaccess files, as a small mistake can make<br />
your Web site stop working. You should immediately test the site to be sure it works.</p>
<p>You can use any text editor to create or make changes to .htaccess files.<br />
Keep in mind that commands in these files should be placed on one line only, so if your<br />
text editor uses word-wrap, make sure it&#8217;s disabled.<br />
Be sure .htaccess file is uploaded in ASCII mode, not BINARY, or it won&#8217;t work.</p>
<p>Your text editor or operating system may probably not allow to save file as .htaccess.<br />
The solution is to save the file as htaccess.txt and upload it to your server.<br />
After doing that, you should use your FTP client and rename the file to it&#8217;s proper name.</p>
<p>Some sites do not allow use of .htaccess files, since they can slow down a server overloaded<br />
with domains if they&#8217;re all using such files, and some things that they can do can<br />
compromise a server configuration that has been specifically setup by the admin.<br />
Just be sure to read their TOS carefully or ask permission from your host.</p>
<p>Here are the most notable and useful .htaccess examples&#8230;</p>
<h2>Custom error pages</h2>
<p>The most common errors are 404 (Not Found) and 500 (Internal Server Error).<br />
Design your custom Web pages for these errors (you aren&#8217;t limited to these errors,<br />
you can create an error page for each and every error).<br />
Add the following commands to your .htaccess file&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">ErrorDocument 404 /404.html<br />
ErrorDocument 500 /500.html</div>
<p>You can name the pages anything you want, and you can place them anywhere you want within<br />
your site. The initial slash in the directory location represents the root directory of your site.</p>
<h2>Enabling SSI</h2>
<p>If you want to use SSI, but can&#8217;t do so with your current Web host, you can change that<br />
with .htaccess file. The following lines tell the server that any file named .shtml should<br />
be parsed for server side commands&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">AddType text/html .shtml<br />
AddHandler server-parsed .shtml<br />
Options Indexes FollowSymLinks Includes</div>
<p>If you don&#8217;t care about the performance hit of having all .html files parsed for SSI,<br />
change the second line to&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">AddHandler server-parsed .shtml .html</div>
<p>If you&#8217;re going to keep SSI pages with the extension of .shtml, and you want to use SSI<br />
on your index pages, you need to add the following line to your .htaccess file&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">DirectoryIndex index.shtml index.html</div>
<p>This allows a page named index.shtml to be your default page, and if that isn&#8217;t found,<br />
index.html is loaded.</p>
<h2>Redirects</h2>
<p>You can use .htaccess file to redirect any request for a specific page to a new page&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">Redirect /OldDir/old.html http://site.com/NewDir/new.html</div>
<p>Server-side redirects are very useful for shortening affiliate links.<br />
Your visitors won&#8217;t be turned off by long links that are obviously affiliate links.<br />
For example, to create a redirect at the URL:</p>
<p><strong>http://YourSite.com/link</strong></p>
<p>to point to the URL:</p>
<p><strong>http://www.MerchantDomain.com/affil.cgi?12345</strong></p>
<p>put this line in your .htaccess file&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">Redirect /link http://www.MerchantDomain.com/affil.cgi?12345</div>
<h2>Protecting your bandwidth</h2>
<p>&#8220;Bandwidth stealing,&#8221; also known as &#8220;hot linking,&#8221; is linking directly to non-html objects<br />
on another server, such as images, electronic books etc. The most common practice of hot linking<br />
pertains to another site&#8217;s images.</p>
<p>To disallow hot linking on your server, create the following .htaccess file and upload it to<br />
the folder that contains the images you wish to protect&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">RewriteEngine on<br />
RewriteCond %{HTTP_REFERER} !^$<br />
RewriteCond %{HTTP_REFERER} !^http://(www\.)?YourSite\.com/.*$ [NC]<br />
RewriteRule \.(gif|jpg)$ &#8211; [F]</div>
<p>Replace &#8220;YourSite.com&#8221; with your own. The above code causes a broken image to be displayed when<br />
it&#8217;s hot linked. If you&#8217;d like to display an alternate image in place of the hot linked one,<br />
replace the last line with&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">RewriteRule \.(gif|jpg)$ http://www.YourSite.com/stop.gif [R,L]</div>
<p>Replace &#8220;YourSite.com&#8221; and stop.gif with your real names.</p>
<h2>Preventing directory listing</h2>
<p>Typically servers are setup to prevent directory listing, but often they aren&#8217;t.<br />
If you have a directory full of downloads or images that you don&#8217;t want people to be able<br />
to browse through, add the following line to your .htaccess file&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">IndexIgnore *</div>
<p>The * matches all files. If, for example, you want to prevent only listing of images, use&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">IndexIgnore *.gif *.jpg</div>
<h2>Redirecting YourSite.com to www.YourSite.com</h2>
<p>If search engines find both www and non-www links from other sites to your site, they may treat<br />
<strong>http://YourSite.com</strong> and <strong>http://www.YourSite.com</strong> as two different websites with the same content.<br />
This means that your site can be penalized for duplicate content.</p>
<p>Many experts recommend to set up a 301 redirect (permanent redirect) from YourSite.com to www.YourSite.com&#8230;</p>
<div class="frm1 mono" style="background-color:#ffffcc;">RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^YourSite\.com [nc]<br />
RewriteRule (.*) http://www.YourSite.com/$1 [R=301,L]</div>
<p>Replace &#8220;YourSite.com&#8221; with your real domain name.</p>
<hr />
<p>The .htaccess file is very obscure and extremely useful when used properly.</p>
</div>
<br />Posted in Apache  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=56&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/12/16/htaccess-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress vs. WordPress MU: A Comparison</title>
		<link>http://kapiluttam.wordpress.com/2009/12/03/wordpress-vs-wordpress-mu-a-comparison/</link>
		<comments>http://kapiluttam.wordpress.com/2009/12/03/wordpress-vs-wordpress-mu-a-comparison/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 09:17:36 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[Word Press]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/?p=44</guid>
		<description><![CDATA[Although WordPress and WordPress MU share somewhere around 95% of the same code, there are many more differences between the two than just multi-blog support. Here’s a thorough analysis: WordPress WordPress MU Supports one blog with multiple bloggers. Supports multiple blogs and multiple bloggers. Bloggers can write for multiple blogs. Famous for its “5 minute [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=44&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<p>Although WordPress and WordPress MU share somewhere around 95% of  the same code, there are many more differences between the two than  just multi-blog support. Here’s a thorough analysis:</p>
<p><span id="more-48"> </span></p>
<table border="1">
<tbody>
<tr>
<th>WordPress</th>
<th>WordPress MU</th>
</tr>
<tr>
<td>Supports one blog with multiple bloggers.</td>
<td>Supports multiple blogs and multiple bloggers. Bloggers can write for multiple blogs.</td>
</tr>
<tr>
<td>Famous for its “5 minute install.”</td>
<td>Setup is more involved.</td>
</tr>
<tr>
<td>No advanced hosting requirements.</td>
<td>Your host needs to support wildcard DNS to use the subdomains feature.</td>
</tr>
<tr>
<td>Instant installation (through Fantastico, etc.) supported by many webhosts.</td>
<td>FTP time!</td>
</tr>
<tr>
<td>Each user is assigned a role level (subscriber, contributor, author, editor, administrator).</td>
<td>In addition to the standard WordPress roles, you can also specify “site admins” who can add/edit/delete all blogs and users.</td>
</tr>
<tr>
<td>WordPress receives updates first.</td>
<td>MU users must wait for WordPress updates to be applied to WordPress MU.</td>
</tr>
<tr>
<td>Administrators can edit themes, plugins, and code files from within WordPress.</td>
<td>The Theme Editor, Plugin Editor, and Manage Files sections are all disabled for security reasons.</td>
</tr>
<tr>
<td>Plugins can be enabled/disabled by the blog administrator.</td>
<td>The site admin can opt to have plugins disabled altogether (the  default setting), or allow blog administrators to enable/disable  plugins that have been uploaded.</p>
<p>Plugins can also be uploaded to a special “mu-plugins” folder, where  they will be executed automatically on all blogs. (Some plugins won’t  function property when run this way, however.)</td>
</tr>
<tr>
<td>If you have multiple blogs running standard WordPress, you’d need to upload plugin updates to each one.</td>
<td>Plugins for all WordPress MU blogs are stored in one place. Update once, and it takes effect on all the site’s blogs.</td>
</tr>
<tr>
<td>If you have multiple blogs running standard WordPress, you’d need to login to each one separately to access the administration.</td>
<td>You can switch between blog admins using a simple drop-down menu.</td>
</tr>
<tr>
<td>Allows you to use most HTML in your posts, but strips out PHP.</td>
<td>In addition to removing PHP, WordPress MU is more strict in regards  to what post HTML it accepts. For example, it will strip out class/ID  attributes, inline styles, &lt;span&gt; tags, etc.</td>
</tr>
<tr>
<td>WordPress allows posting via email.</td>
<td>WordPress MU lacks this feature.</td>
</tr>
<tr>
<td>WordPress lets you customize its list of update services.</td>
<td>WordPress MU doesn’t let you specify update services.</td>
</tr>
</tbody>
</table>
<p>Are there any other differences between WordPress and MU that I missed? Let me know in the comments!</p>
</div>
<br />Posted in Word Press  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=44&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/12/03/wordpress-vs-wordpress-mu-a-comparison/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>
	</item>
		<item>
		<title>Unethical SEO Techniques</title>
		<link>http://kapiluttam.wordpress.com/2009/11/23/unethical-seo-techniques/</link>
		<comments>http://kapiluttam.wordpress.com/2009/11/23/unethical-seo-techniques/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 18:42:17 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/?p=30</guid>
		<description><![CDATA[When you take out a search engine optimisation campaign the thing you need to take into consideration is the SEO techniques that are going to be used for the optimisation of your website. Many internet marketing companies use unethical SEO techniques with their search engine optimization campaigns. You have to be careful that you choose [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=30&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When you take out a search engine optimisation campaign the thing you need to take into consideration is the SEO techniques that are going to be used for the optimisation of your website. Many internet marketing companies use unethical <a title="seo" href="http://www.weblinx.biz/seo_training.htm">SEO</a> techniques with their <a title="search engine optimization" href="http://www.weblinx.biz/seo_company.htm">search engine optimization</a> campaigns. You have to be careful that you choose a search engine optimisation company who uses ethical and successful SEO techniques in their work. Always ask for examples of work they have promoted on the search engines using clever internet marketing solutions.</p>
<h2>SEO Techniques &#8211; Unethical</h2>
<p>here are many unethical SEO techniques which SEO companies or an internet <a title="advertising company" href="http://www.weblinx.biz/advertising_company.htm">advertising company</a> may use in their work which do not deliver the results anticipated at the time you purchase a company website design search engine optimisation service. You need to be careful that the company you choose does not <a title="advertise" href="http://www.weblinx.biz/advertise_your_business.htm">advertise</a> by using any unethical SEO techniques, as this can limit the potential of your <a title="internet marketing" href="http://www.weblinx.biz/advertising.htm">internet advertising</a> campaign. SEO techniques which are deemed unethical include meta-tag spamming, title spamming, hidden text, noscript content spamming and doorway and gateway pages. The risk of using unethical SEO techniques is harmful to your site long term and we recommend you stay away from them when proceeding with online media solutions and clever internet marketing promotions.</p>
<h2>Unethical SEO Techniques &#8211; Meta-tag Spamming</h2>
<p>Meta-tag spam is one of the unethical SEO techniques some internet marketing companies use. Meta-tags are html content search engine spiders use to quickly reference the content of your web page and what product or services you offer. What some companies do is spam the meta-tags &#8220;keyword&#8221; element with a long list of repeated search terms. They also then repeat this list in the &#8220;description&#8221; element of the meta-tags. This is an unethical form of SEO techniques as the correct way to use meta-tags is to place relevant keywords and a description about the web page itself in the meta-tags.</p>
<h2>Unethical SEO Techniques &#8211; Title Spamming</h2>
<p>Title spamming is also amongst the list of SEO techniques deemed unethical by internet marketing companies. As with meta-tags some website design companies place a long list of keywords in the title tags of the pages. The correct way to use the title tags is to place a descriptive brief in the title tag relevant to the web page itself. The title tags have to be done properly because it is through title tags that search engine spiders identify your web pages and what they relate to and if done correctly can be a clever <a title="internet marketing" href="http://www.weblinx.biz/internet_marketing.htm">internet marketing</a> strategy.</p>
<h2>Unethical SEO Techniques &#8211; Hidden Text</h2>
<p>Another one of the unethical <a title="seo" href="http://www.weblinx.biz/seo_training.htm">SEO</a> techniques is hidden text when carrying out company website optimisation. Hidden text is when you try to place a long list of keywords on the page and style them with a cascading style sheet (CSS) to be &#8220;invisible&#8221; or blended into the web page. Using the hidden text technique is useless as search engine spiders are now upgraded and will know that you have tried to hide the content and can penalise your site for it. Our SEO consultancy team recommend strongly that you stay away from using hidden text on the pages as it can seriously de-value the other SEO techniques which may have been employed on your website for your clever internet marketing <a title="search engine optimisation" href="http://www.weblinx.biz/">search engine optimisation</a> campaign.</p>
<h2>Unethical SEO Techniques &#8211; NOSCRIPT Spamming</h2>
<p>NOSCRIPT, when abused, is another one of the undesirable and unethical SEO techniques which may be used in your SEO promotion campaign. The NOSCRIPT is content which is not visible on the web page when viewed in a browser, but is visible to the search engine spiders. When used correctly, NOSCRIPT can be beneficial to your company website. Our SEO Consultancy advise that if you do decide to use NOSCRIPT content that you do not spam the content with loads of keywords continuously repeated.</p>
<h2>Unethical SEO Techniques &#8211; Doorway and Gateway Pages</h2>
<p>The use of doorway or gateway pages is another form of undesirable SEO techniques for website optimisation. There are pages that are created to redirect to your homepage once clicked on. This is done via a meta-tag redirect script, mainly done by companies selling sex toys and Viagra. They optimise doorway or gateway pages for high searched terms, for example &#8220;cheap computers&#8221;, then once the pages are clicked on you are redirected to their website.</p>
<p>Our <a title="website promotion" href="http://www.weblinx.biz/website_promotion.htm">website promotion</a> consultants do not recommend this as they are completely useless and will not be beneficial to your website and are not a clever internet marketing solution long term.As you have read there are many unethical <a title="seo" href="http://www.weblinx.biz/seo_company.htm">SEO</a> techniques which online marketing companies use. You have to be completely sure that you have chosen the right  <a title="seo company" href="http://www.weblinx.biz/seo_company.htm">seo company</a> who employ correct SEO techniques to use for your        <a title="clever seo" href="http://www.weblinx.biz/internet_marketing_company.htm">clever internet marketing</a> advertising.</p>
<h2>Weblinx SEO Techniques</h2>
<p>At Weblinx we are an <a title="internet_company" href="http://www.weblinx.biz/internet_company.htm">internet company</a> that work in accordance with the Google guidelines for correct <a title="website design" href="http://www.weblinx.biz/website_design.htm">website design</a>. We stay away from using any unethical and undesirable SEO techniques within our work. We are masters within internet marketing strategies and help you in your quest to be above your competitors when you advertise your business with our company website design search engine promotion techniques. A clever internet marketing strategy is the use of Google maps. They are free and can be used for national seo and local seo and are a free service offered by Google. We will guide you on how to implement your Google maps for <a title="national seo" href="http://www.weblinx.biz/seo_company.htm">national seo</a> and local seo or we will charge a small admin fee to set you Google maps up targeting the local areas to your business address. We have seo managers waiting to help you get your website positioned on page one using clever internet marketing strategies to compliment your Google map listing for National seo or local seo.</p>
<br />Posted in SEO  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=30&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/11/23/unethical-seo-techniques/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>
	</item>
		<item>
		<title>10 SEO Techniques All Top Web Sites Should Use</title>
		<link>http://kapiluttam.wordpress.com/2009/11/23/10-seo-techniques-all-top-web-sites-should-use/</link>
		<comments>http://kapiluttam.wordpress.com/2009/11/23/10-seo-techniques-all-top-web-sites-should-use/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 18:37:32 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/2009/11/23/10-seo-techniques-all-top-web-sites-should-use/</guid>
		<description><![CDATA[We recently discussed the 15 Key Elements All Top Web Sites Should Have . This post focused on elements relating to design, content and development. This time, we’ll move onto the important issue of Search Engine Optimization (SEO). SEO is such a hot topic these days. How do you get your web site within the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=27&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://freelancefolder.com/10-top-seo-techniques"><img src="http://freelancefolder.com/wp-content/uploads/search-engines-585x341.jpg" alt="SEO Techniques" width="585" height="341" /></a></p>
<p>We recently discussed the <a title="15 Key Elements All Top Web Sites Should Have" href="http://freelancefolder.com/15-top-site-elements/">15 Key Elements All Top Web Sites Should Have</a> <a href="http://www.stumbleupon.com/url/http://freelancefolder.com/15-top-site-elements/" target="_blank"></a>. This post focused on elements relating to design, content and development. This time, we’ll move onto the important issue of Search Engine Optimization (SEO).</p>
<p>SEO is such a hot topic these days. How do you get your web site within the first page or two of the search engines? How do you increase your Google page rank?</p>
<p>There are companies who dedicate themselves full time to doing SEO at a pretty penny. Something a lot of people can’t necessarily afford to pay for or spend the time on.</p>
<p>However, there are some simple things you can do when building your site that will help increase your chances of having good results. In no particular order, below are 10 of these items…</p>
<h3>1. Title Tag</h3>
<p>Near the very top of a web site’s source code you’ll find various meta tags — the standard ones being the Title, Description and Keyword tags. The title tag is technically not a meta tag, though it is commonly associated with them. The title tag plays such a large role in the indexing of your web site, that it is considered the most important of the three.</p>
<p>A page title is the first thing a search engine will look at when determining just what the particular page is about. It is also the first thing potential visitors will see when looking at your search engine listing.</p>
<p>It’s important to include a keyword or two in the title tag — but don’t go overboard – you don’t want to do what’s known as “keyword stuffing” which does nothing but make your web site look like spam. Most people will include either the company name, or title of the particular page here, as well.</p>
<h3>2. Meta Tags</h3>
<p><img src="http://freelancefolder.com/wp-content/uploads/p_10seo_meta.jpg" alt="Meta Tags" width="300" height="250" /></p>
<p>There are two primary meta tags in terms of SEO — the description and the keyword tag. It’s debatable whether the search engines use the description tag as far as ranking your results. However it is one of the more important tags because it is listed in your search result — it is what users read when your link comes up and what makes them decide whether or not to click on your link.</p>
<p>Be sure to include a few relevant keywords in this tag, but don’t stuff it with keywords either. The description tag should read like a sentence — not a keyword list.</p>
<p>Due to “keyword stuffing” many search engines now completely disregard the keyword tag. It is no longer nearly as important as it was years ago, however it doesn’t hurt to include them in your source code.</p>
<p>When creating your keyword list, you’ll want to think of the specific terms people will type in when searching for a site like yours. Just don’t go overboard — too many duplicates are not a good thing (as in “web designer” “web designers” “custom web designer” “html web designer” “your state here web designer” – you get the idea). Those are all basically the same, so pick one or two variations at the most and move onto the next keyword.</p>
<h3>3. Proper Use of Heading Tags</h3>
<p>This is a very important element to consider when writing out your site copy. Use of heading tags helps users, web browsers and search engines alike know where the major key points of your copy are.</p>
<p>Your main page title should use the &lt;h1&gt; tag — this shows what your page is about. Use of additional tags, such as &lt;h2&gt; and &lt;h3&gt; are equally important by helping to break down your copy. For one, you’ll see a visual break in the text. But as far as the search engines are concerned, it will automatically know what your topics are on a page. The various heading tags give a priority to the content and help index your site properly.</p>
<h3>4. Alt Attributes on Images</h3>
<p><img src="http://freelancefolder.com/wp-content/uploads/p_10seo_image.jpg" alt="Alt Image Tag" width="300" height="300" /></p>
<p>Putting alt attributes on your images actually serves two purposes. In terms of SEO, putting a brief yet descriptive alt attribute along with your image, places additional relevant text to your source code that the search engines can see when indexing your site. The more relevant text on your page the better chance you have of achieving higher search engine rankings.</p>
<p>In addition, including image alt attributes help the visually impaired who access web sites using a screen reader. They can’t see the image, but with a descriptive alt attribute, they will be able to know what your image is.</p>
<h3>5. Title Attributes on Links</h3>
<p>Including title attributes on links is another important step that any good web site will have. That’s the little “tool tip” that pops up when you place your mouse over a link. These are especially important for image links, but equally useful for text links.</p>
<p>As a note, you should use descriptive text for your links. “Click here” doesn’t really tell a person – or more importantly, the search engines — what the link is. At the very least put a title tag that will explain that “Click Here” really means “Web Design Portfolio” for example. Better yet – make the main link text something like “View my web design portfolio” — this will give some value to the link showing that the resulting page is relevant to searches for portfolio’s.</p>
<h3>6. XML Sitemap</h3>
<p>My <a title="15 Key Elements All Top Web Sites Should Have" href="http://freelancefolder.com/15-top-site-elements/">last post</a> <a href="http://www.stumbleupon.com/url/http://freelancefolder.com/15-top-site-elements/" target="_blank"></a> referenced the sitemaps used by web visitors to help them navigate through your site themselves. However, there’s another version — XML sitemaps — that are used by the search engines in order to index through your site, as well.</p>
<p>This list of ALL pages / posts / etc. of your site also includes information such as the date the page was last modified, as well as a priority number of what you feel the most important pages of your sites are. All elements that help the search engines properly find and link to all content of your site.</p>
<h3>7. Relevant Content</h3>
<p>Having content relevant to your main page or site topic is perhaps the most important SEO aspect of a page. You can put all the keywords you want in the meta tags and alt image tags, etc — but if the actual readable text on the page is not relevant to the target keywords, it ends up basically being a futile attempt.</p>
<p>While it is important to include as many keywords in your page copy as possible, it is equally as important for it to read well and make sense. I’m sure we’ve all seen keyword stuffed pages written by SEO companies that honestly don’t make much sense from the reader’s point of view.</p>
<p>When creating your site copy, just write naturally, explaining whatever information you’re discussing. The key is to make it relevant, and to have it make sense to the reader. Even if you trick the search engines into thinking your page is great — when a potential customer arrives at the site and can’t make heads or tails of your information and it just feels spammy to them — you can bet they’ll be clicking on the next web site within a matter of seconds.</p>
<p><img src="http://freelancefolder.com/wp-content/uploads/p_10seo_links.jpg" alt="Link Building" /></p>
<h3>8. Link Building</h3>
<p>We’ve probably all heard of Google Page Rank — it seems to be every web site owner’s dream to have as high a page rank as possible. While the algorithm for determining page rank encompasses many elements, and is constantly changing, one item is the number of links pointing to your web site.</p>
<p>Now, you’ll want to steer clear of link farms and other spammy attempts at getting links to your site. However there are many reputable and niche directory sites that you can use to submit your web site, or specific blog articles to.</p>
<p>With genuine content — especially if you have a blog — you’ll be able to generate links with other web sites and blogs, as well. It’s somewhat of a give and take, in that if you link out to other sites, you’ll find sites linking back to you  — and hopefully see your page rank going up, as well!</p>
<h3>9. Social Media</h3>
<p>Although technically not SEO, Social Media is such a growing factor in getting your web site noticed, that it’s an important element to include in your plan.</p>
<p>Social media ranges from social networks like Twitter, Facebook and LinkedIn — to social bookmarking sites such as Delicious, Digg, StumbleUpon and many more. There is a lot of <a title="35 Powerful Ways to Get Noticed" href="http://www.smallfuel.com/blog/entry/how-to-get-noticed/" target="_blank">relationship building</a> <a href="http://www.stumbleupon.com/url/http://www.smallfuel.com/blog/entry/how-to-get-noticed/" target="_blank"></a> involved, but as you build your own networks and build quality content on your web site or blog, you’ll see traffic to your web site increasing, as well.</p>
<p>As with any relationship, it is a give and take. Don’t just expect to join a site like Twitter for the pure sake of pushing your content. That just won’t fly — your true intentions will stick out like a sore thumb and do nothing but turn people off.</p>
<p>Even if you are on the site purely for networking reasons, the key is to make friends. Help out members of your network if they ask for a “retweet” or Digg, give helpful advice if asked, etc. You’ll see the same in return.</p>
<p>If you write a great post and have built meaningful relationships with peers in your  niche, you’ll often find that friends will submit your posts and give you votes on the social bookmarking sites. The more votes you receive, the more likely your post is to be noticed by others and shared around, often resulting in additional link backs from other blogs, etc.</p>
<h3>10. A Few SEO Don’ts — Flash and Splash</h3>
<p><img src="http://freelancefolder.com/wp-content/uploads/p_10seo_flash.jpg" alt="Flash Player" width="330" height="200" />Along with any list of Do’s come the Don’ts. As far as SEO is concerned, two of these items are splash pages (often consisting of a flash animation) and all flash web sites.</p>
<p>Yes, flash is pretty! Full flash web sites can actually be amazing to look at — their own bit of interactive artwork. But unfortunately the search engines don’t get along well with Flash. Although there is talk of possible advancement in this area, for the most part the search engines cannot read Flash.</p>
<p>All that great content that you wrote for your site will not be seen by the search engines if it’s embedded into a Flash web site. As far as the search engines are concerned, your all flash web site might as well be invisible. And if the search engines can’t see your site content, a good chunk of potential customers will miss out on what you have to offer, too.</p>
<p>Equally as “pointless” are splash pages. Once very popular, the splash page should no longer be an important feature of any site. While splash pages used to serve as an introduction into a web site (often with a flash animation), it is no longer seen as helpful, and often times might actually annoy visitors.</p>
<p>For one — it’s an extra click to get into your content. Worse is when you don’t give a “skip intro” option or set of links into your main site content — because you’re essentially forcing your visitors to sit through the full animation. If you’re lucky, this will only annoy them… if not — they’ll just leave without giving your main web site a shot. And without an html link pointing into your site, the search engines have no way to continue either (unless you made use of a sitemap.xml file — but still…)</p>
<p>A good alternative to both issues is to make use of a flash header. There’s no problem to include a flash animation at the top of your main site, or as a feature within the content area, etc. Because this is an addition to your web site, as opposed to a full separate element.</p>
<br />Posted in SEO  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=27&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/11/23/10-seo-techniques-all-top-web-sites-should-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>

		<media:content url="http://freelancefolder.com/wp-content/uploads/search-engines-585x341.jpg" medium="image">
			<media:title type="html">SEO Techniques</media:title>
		</media:content>

		<media:content url="http://freelancefolder.com/wp-content/uploads/p_10seo_meta.jpg" medium="image">
			<media:title type="html">Meta Tags</media:title>
		</media:content>

		<media:content url="http://freelancefolder.com/wp-content/uploads/p_10seo_image.jpg" medium="image">
			<media:title type="html">Alt Image Tag</media:title>
		</media:content>

		<media:content url="http://freelancefolder.com/wp-content/uploads/p_10seo_links.jpg" medium="image">
			<media:title type="html">Link Building</media:title>
		</media:content>

		<media:content url="http://freelancefolder.com/wp-content/uploads/p_10seo_flash.jpg" medium="image">
			<media:title type="html">Flash Player</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing WordPress Locally</title>
		<link>http://kapiluttam.wordpress.com/2009/11/19/installing-wordpress-locally/</link>
		<comments>http://kapiluttam.wordpress.com/2009/11/19/installing-wordpress-locally/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 12:40:12 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[Word Press]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/2009/11/19/installing-wordpress-locally/</guid>
		<description><![CDATA[This is the first chapter of the Complete WordPress Theme Guide series. In this chapter, you will learn how to install WordPress on a local computer. By doing so, it will save you time from updating and previewing files (so, you don’t have to frequently upload files on every change). You can also use the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=26&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is the first chapter of the <a href="http://www.webdesignerwall.com/tutorials/complete-wordpress-theme-guide/">Complete WordPress Theme Guide</a> series. In this chapter, you will learn how to install WordPress on a local computer. By doing so, it will save you time from updating and previewing files (so, you don’t have to frequently upload files on every change). You can also use the local version to test new plugins, themes, and upgrades. This tutorial is intended for beginners who want to learn how to run WordPress locally.</p>
<h3>Quick Summary</h3>
<p>If you have some technical background, you can skip the detailed steps in this tutorial. Here are the simplified steps on how to install WordPress on a local computer:</p>
<ol>
<li>Install a local server (<strong>Mac:</strong> <a href="http://www.mamp.info/">MAMP</a>, <strong>PC:</strong><a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> or <a href="http://www.wampserver.com/en/">WAMP</a>).</li>
<li>Create a new database.</li>
<li>Download WordPress from <a href="http://wordpress.org/download/">wordpress.org</a> and extract the files to a new folder  under the <em>htdocs</em> folder.</li>
<li>Rename the <em>wp-config-sample.php</em> file to <em>wp-config.php</em> and update the database details according to your local server.</li>
<li>Run <em>wp-admin/install.php</em> and follow the instructions to install WordPress.</li>
<li>Done!</li>
</ol>
<h3>Let’s Begin…</h3>
<p>Before you start, let’s look at the requirements to run WordPress:</p>
<ul>
<li><strong>PHP</strong> 4.3+</li>
<li><strong>MySQL</strong> 4+ Database Server</li>
</ul>
<h3><em>1.</em> Install a Local Server</h3>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/local-servers.gif" alt="local servers" /></p>
<p>In order to run any PHP/database application on a local computer, you need a local host (ie. Apache + MySQL). For Mac, use <a href="http://www.mamp.info/">MAMP</a>. For PC, use <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> or <a href="http://www.wampserver.com/en/">WAMP</a>.</p>
<p>I’m using Mac here, so I’m going to install MAMP. Go to <a href="http://www.mamp.info/en/download.html">mamp.info</a>, download and install MAMP.</p>
<h3><em>2.</em> Create a New Database</h3>
<p>After you’ve installed MAMP, run it and it should take you to the start page. Now click on phpMyAdmin. In the phpMyAdmin page, create a new database (eg. <em>wordpress</em>).</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/phpmyadmin.gif" alt="phpMyAdmin" /></p>
<h3><em>3.</em> Download WordPress</h3>
<p>Go to <a href="http://wordpress.org/download/">wordpress.org</a> and download the latest build of WordPress. Go to the <em>htdocs</em> folder (where you installed the MAMP), extract the wordpress.zip to a new folder (eg. <em>mysite</em>).</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/extract-wp.gif" alt="Extract WordPress Zip" /></p>
<h3><em>4.</em> Update wp-config.php File</h3>
<p>In the folder, rename the <em>wp-config-sample.php</em> to <em>wp-config.php</em>. Open <em>wp-config.php</em> and update the database details (db_name, user, password, host) according to your local server.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/wp-config.gif" alt="Update wp-config.php" /></p>
<h3><em>5.</em> Run install.php</h3>
<p>With your browser, go to <em>http://localhost:8888/mysite/wp-admin/install.php</em> and follow the instructions to install WordPress.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/install-wp.gif" alt="Install WordPress" /></p>
<br />Posted in Word Press  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=26&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/11/19/installing-wordpress-locally/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/local-servers.gif" medium="image">
			<media:title type="html">local servers</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/phpmyadmin.gif" medium="image">
			<media:title type="html">phpMyAdmin</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/extract-wp.gif" medium="image">
			<media:title type="html">Extract Wordpress Zip</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/wp-config.gif" medium="image">
			<media:title type="html">Update wp-config.php</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/install-wp.gif" medium="image">
			<media:title type="html">Install WordPress</media:title>
		</media:content>
	</item>
		<item>
		<title>Exporting and Importing WordPress</title>
		<link>http://kapiluttam.wordpress.com/2009/11/19/exporting-and-importing-wordpress/</link>
		<comments>http://kapiluttam.wordpress.com/2009/11/19/exporting-and-importing-wordpress/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 12:34:02 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[Word Press]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/?p=23</guid>
		<description><![CDATA[In the last two chapters, I talked about Installing WordPress Locally and Building Custom WordPress Theme. This chapter will cover exporting your local WordPress to a web host. Assume you are done with the local WordPress development, it is time to learn how to export and import WordPress. Then you can keep the local version [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=23&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the last two chapters, I talked about <a href="http://www.webdesignerwall.com/tutorials/installing-wordpress-locally/">Installing WordPress Locally</a> and <a href="http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/">Building Custom WordPress Theme</a>. This chapter will cover exporting your local WordPress to a web host. Assume you are done with the local WordPress development, it is time to learn how to export and import WordPress. Then you can keep the local version for backup purpose and future development (ie. testing new themes, plugins, and upgrades).</p>
<h3><em>1.</em> Export Local Database</h3>
<p>Login to your local phpMyAdmin, select the database from the dropdown. Click on the Export tab:</p>
<ul>
<li>Under the Export field, make sure all tables are selected</li>
<li>Under the Structure field, tick &#8220;Add DROP TABLE / DROP VIEW&#8221;</li>
<li>Tick &#8220;Save as File&#8221;</li>
<li>Then click Go and it will prompt you to download a SQL file</li>
</ul>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/export-database.gif" alt="export database" /></p>
<h3><em>2.</em> Find &amp; Replace All Local URLs</h3>
<p>Open the database SQL file with a text editor. Find and replace all local URLs with your domain URL (eg. replace all &#8220;<em>http://localhost:8888/mysite</em>&#8221; with &#8220;<em>http://www.yourdomain.com</em>&#8220;).</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/replace-all-url.gif" alt="export database" /></p>
<h3><em>3.</em> Import The Database</h3>
<p>Login to your server cPanel, go to MySQL Databases, create a new database and assign a user. Now go to phpMyAdmin, select the database (the one that was just created) from the dropdown, click on the Import tab, browse the SQL file and click Go.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/import-database.gif" alt="export database" /></p>
<h3><em>4.</em> Upload WordPress</h3>
<p>Upload the entire WordPress folder to your server.</p>
<h3><em>5.</em> Change The wp-config.php Setting</h3>
<p>On your server, open the <em>wp-config.php</em> file. Change the database details to reflect your server settings.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/change-wp-config.gif" alt="export database" /></p>
<h3><em>6.</em> Done</h3>
<p>Go to your website and everything should work perfect.</p>
<br />Posted in Word Press  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=23&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/11/19/exporting-and-importing-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/export-database.gif" medium="image">
			<media:title type="html">export database</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/replace-all-url.gif" medium="image">
			<media:title type="html">export database</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/import-database.gif" medium="image">
			<media:title type="html">export database</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/change-wp-config.gif" medium="image">
			<media:title type="html">export database</media:title>
		</media:content>
	</item>
		<item>
		<title>Building Custom WordPress Theme</title>
		<link>http://kapiluttam.wordpress.com/2009/11/19/building-custom-wordpress-theme/</link>
		<comments>http://kapiluttam.wordpress.com/2009/11/19/building-custom-wordpress-theme/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 12:32:07 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[Word Press]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/2009/11/19/building-custom-wordpress-theme/</guid>
		<description><![CDATA[This is the Chapter II of the Complete WordPress Theme Guide series. This chapter will show you how to build a custom WordPress theme. Although the Codex site provides very good documentations on how to create a theme, but I find it too complicated for a beginner. In this tutorial, I will explain the basics [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=22&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is the Chapter II of the <a href="http://www.webdesignerwall.com/tutorials/complete-wordpress-theme-guide/">Complete WordPress Theme Guide</a> series. This chapter will show you how to build a custom WordPress theme. Although  the <a href="http://codex.wordpress.org/Main_Page">Codex</a> site provides very good documentations on how to create a theme, but I find it too complicated for a beginner. In this tutorial, I will explain the basics of how WordPress theme works and show you how to convert a static HTML template into a theme. No PHP skill is required, but you need Photoshop and CSS skills to create your own design.</p>
<h3><em>1.</em> The Blog Frontend</h3>
<p>Before you start, let’s take a look at the WordPress default theme and see how it is structured. Take note of the elements (header, post title, search form, navigation, footer, etc.).</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/default-homepage.gif" alt="default homepage" /> <em>Default Frontpage (index.php)</em></p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/default-single.gif" alt="default homepage" /> <em>Default Single (single.php)</em></p>
<h3><em>2.</em> Photoshop Mockups</h3>
<p>Based on the information gathered from the default theme, design a Photoshop mockup of your blog. Here I’m using <a href="http://www.ndesign-studio.com/resources/wp-themes/glossyblue/">GlossyBlue</a>, one of my free <a href="http://www.ndesign-studio.com/resources/wp-themes/">WordPress themes</a>, as an example. Download the <a href="http://www.webdesignerwall.com/file/wordpress-theme-demo.zip">demo.zip</a> to see the Photoshop file.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/photoshop-mockup.gif" alt="default homepage" /></p>
<h3><em>3.</em> HTML + CSS</h3>
<p>After the PSD design is done, create a static HTML+CSS template of each page. You can use my GlossyBlue HTML files in the <a href="http://www.webdesignerwall.com/file/wordpress-theme-demo.zip">demo.zip</a> to follow this tutorial. Extract the zip and take a look at the <em>index.html</em>, <em>single.html</em>, and <em>page.html</em>. Later in the tutorial, I will use these HTML files and convert them into a theme.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/html-css-template.gif" alt="default homepage" /></p>
<h4>Why Create a Static HTML File First?</h4>
<p>Mainly because it will make the development process a lot easier. I usually create a HTML file for every template that I need, test it across all browsers, validate both HTML and CSS markups, then all I have to do is cut &amp; paste the WordPress code. By doing so, I don’t have to worry about HTML or CSS bugs during my theme making process.</p>
<h3><em>4.</em> How WordPress Theme Works</h3>
<p>If you go the default theme folder (<em>wp-content/themes/default</em>), you should see  many PHP files (called template file) and one <em>style.css</em> file. When you are viewing the front page, WordPress actually uses several template files to generate the page (<em>index.php</em> &lt;&lt; <em>header.php</em>, <em>sidebar.php</em>, and <em>footer.php</em>).</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/how-theme-works.gif" alt="how theme works" /></p>
<p>For more details, check out <a href="http://codex.wordpress.org/Site_Architecture_1.5">Site Architecture</a> and <a href="http://codex.wordpress.org/Template_Hierarchy">Template Hierarchy</a> at Codex.</p>
<h3><em>5.</em> Duplicate The Template Files</h3>
<p>Copy the GlossyBlue HTML folder into the <em>wp-content/themes</em> folder. Then, go to the <em>default</em> theme folder, copy the <em>comments.php</em> and <em>searchform.php</em> file to the <em>glossyblue</em> folder.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/copy-files.gif" alt="copy files" /></p>
<h3><em>6.</em> Style.css</h3>
<p>Go to the WordPress <em>default</em> theme folder, open the <em>style.css</em> file. Copy the commented code at the top and paste it to the GlossyBlue <em>style.css</em> file. Change the theme name and the author information as you desire.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/css-commented-code.gif" alt="theme name and author's information" /></p>
<h3><em>7.</em> Splitting The Files</h3>
<p>Now you need to understand where to split the file into several files: <em>header.php</em>, <em>sidebar.php</em>, and <em>footer.php</em>. The image below shows a simplified version of my <em>index</em> file and how the markups should split.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/splitting-files.gif" alt="splitting files" /></p>
<h3><em>8.</em> Header.php</h3>
<p>Open the <em>index.html</em> file. Cut from the top to where the <code>&lt;!--/header --&gt;</code> ends, paste it in a new PHP file, and save the file as <em>header.php</em>.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/header-code.gif" alt="header code" /></p>
<p>Go to the <em>default</em> theme folder, open the <em>header.php</em>. Copy and replace the tags where it requires PHP code (Template Tag): <code>&lt;title&gt;</code>, <code>&lt;link&gt;</code> stylesheet, <code>&lt;h1&gt;,</code> and <code>&lt;div&gt;</code>.</p>
<p><a href="http://www.webdesignerwall.com/wp-content/uploads/2008/11/header-zoom.gif"><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/header.gif" alt="replace code" /></a></p>
<h4>Navigation Menu (wp_list_pages)</h4>
<p>Replace the <code>&lt;li&gt;</code> tags in the <code>&lt;ul id=nav&gt;</code> with <code>&lt;?php wp_list_pages('sort_column=menu_order&amp;depth=1&amp;title_li=');?&gt;</code></p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/navigation-menu.gif" alt="replace code" /></p>
<p>Reference: <a href="http://codex.wordpress.org/Template_Tags/wp_list_pages">wp_list_pages</a>.</p>
<h3><em>9.</em> Sidebar.php</h3>
<p>Back to  the <em>index.html</em> file, cut from where the <code>&lt;form id=searchform&gt;</code> start to the closing tag of <code>&lt;div id=sidebar&gt;</code> and paste it in a new PHP file, save it as <em>sidebar.php</em>.</p>
<ul>
<li>Replace the <code>&lt;form id=searchform&gt;</code> wrap with <code>&lt;?php include (TEMPLATEPATH . '/searchform.php'); ?&gt;</code>.</li>
<li>Replace the category <code>&lt;li&gt;</code> tags with <code>&lt;?php wp_list_categories('show_count=1&amp;title_li='); ?&gt;</code></li>
<li>Replace the archive  <code>&lt;li&gt;</code> tags with <code>&lt;?php wp_get_archives('type=monthly'); ?&gt;</code></li>
</ul>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/sidebar-code.gif" alt="sidebar" /></p>
<p>References: <a href="http://codex.wordpress.org/Template_Tags/wp_list_categories">wp_list_categories</a> and <a href="http://codex.wordpress.org/Template_Tags/wp_get_archives">wp_get_archives</a>.</p>
<h3><em>10.</em> Footer.php</h3>
<p>Back to  the <em>index.html</em> file, cut from the <code>&lt;div id=footer&gt;</code> tag to the end of <code>&lt;/html&gt;</code> and paste it in a new PHP file, save it as <em>footer.php</em>.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/footer.gif" alt="footer" /></p>
<h4>Recent Posts</h4>
<p>Here I  used the <a href="http://codex.wordpress.org/Template_Tags/query_posts">query_post</a> to display the 5 latest posts.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/recent-posts.gif" alt="recent posts" /></p>
<h4>Recent Comments</h4>
<p>Recent comments are generated by a plugin (included in the theme folder).</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/recent-comments.gif" alt="recent comments" /></p>
<h3><em>11.</em> Index.php</h3>
<p>Now in your <em>index.html</em> file, you should only have the <code>&lt;div id=content&gt;</code> wrap. Save the file as <em>index.php</em>. Insert the line:<code>get_header</code>, <code>get_sidebar</code>, and <code>get_footer</code> in the same order as your layout structure.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/index.gif" alt="index" /></p>
<h3><em>12.</em> Understanding The Loop</h3>
<p>The image below illustrates how The Loop works. The Loop is used to display blog posts and it also lets you control what to display. Basically, The Loop checks if there are posts in your blog, while there are posts, display it, if no post found, say &#8220;Not Found&#8221;.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/the-loop-explain.gif" alt="the loop" /></p>
<h3><em>13.</em> Copy The Loop</h3>
<p>Go to the <em>default</em> theme folder, open the <em>index.php</em> file. Copy The Loop from the default <em>index.php</em> and paste it in between the <code>&lt;div id=content&gt;..&lt;/div&gt;</code>. Then, replace the static text with the WordPress Template Tags: post date, title, category, comments, next and previous link.</p>
<p><a href="http://www.webdesignerwall.com/wp-content/uploads/2008/11/the-loop-zoom.gif"><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/the-loop.gif" alt="the Loop" /></a></p>
<h3><em>14.</em> Preview The Theme</h3>
<p>Congrats! You’ve done the front page (the main part of the theme). Now, login to your admin panel, go to the Design tab, you should see the GlossyBlue theme, activate it and go to the front page to preview the theme.</p>
<h3><em>15.</em> Single.php</h3>
<p>Now, it is time to do the <em>single.php</em> template. If you want, you can go through the same process — cut &amp; paste from the <em>default</em> theme. But, I find it easier to use the <em>index.php</em> that you just created and save it as <em>single.php</em>. Open the <em>default</em> theme <em>single.php</em> file and copy the Template Tags over. Then include the <code>comments_template</code>. The image below highlights what I’ve changed:</p>
<p><a href="http://www.webdesignerwall.com/wp-content/uploads/2008/11/single-zoom.gif"><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/single.gif" alt="single.php" /></a></p>
<h3><em>16.</em> Page.php</h3>
<p>With the <em>single.php</em> template you just created, save it as <em>page.php</em>. Remove the post date, comment form, next/previous link… and that’s it.. there goes your <em>page.php</em> template.</p>
<h3><em>17.</em> Delete The HTML Files</h3>
<p>Delete all the HTML files in the <em>glossyblue</em> folder (we don’t need them anymore). Technically, that is enough for a basic WordPress theme. You may notice there are more PHP files in the <em>default</em> theme. Well, you don’t really need those files if you just want a basic theme. For example, if the <em>search.php</em> or <em>404.php</em> is not present in the theme folder, WordPress will automatically use the <em>index.php</em> to render the page. Read the <a href="http://codex.wordpress.org/Template_Hierarchy">Template Hierarchy</a> for more details.</p>
<h3><em>18.</em> WordPress Page Template</h3>
<p>Ok, final example. I will show you how to use <a href="http://codex.wordpress.org/Pages">Page Template</a> to create an archive page that will list all posts on your blog (good for sitemap). Copy the  <em>archives.php</em> file from the <em>default</em> theme folder. Delete the unwanted code and you should have something like this:</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/archives-template.gif" alt="Archives template" /></p>
<p>Here I’m using  the <a href="http://codex.wordpress.org/Template_Tags/query_posts">query_post</a> (<code>showposts=-1</code> means display all posts) to display a list of all posts.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/archives-queryposts.gif" alt="Archives query posts" /></p>
<p>Now, login to your admin panel, write a new page, title it Archives. On the Page Template dropdown, select Archives.</p>
<p><img src="http://www.webdesignerwall.com/wp-content/uploads/2008/11/archives-page.gif" alt="Archives page" /></p>
<br />Posted in Word Press  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=22&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/11/19/building-custom-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/default-homepage.gif" medium="image">
			<media:title type="html">default homepage</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/default-single.gif" medium="image">
			<media:title type="html">default homepage</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/photoshop-mockup.gif" medium="image">
			<media:title type="html">default homepage</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/html-css-template.gif" medium="image">
			<media:title type="html">default homepage</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/how-theme-works.gif" medium="image">
			<media:title type="html">how theme works</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/copy-files.gif" medium="image">
			<media:title type="html">copy files</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/css-commented-code.gif" medium="image">
			<media:title type="html">theme name and author's information</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/splitting-files.gif" medium="image">
			<media:title type="html">splitting files</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/header-code.gif" medium="image">
			<media:title type="html">header code</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/header.gif" medium="image">
			<media:title type="html">replace code</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/navigation-menu.gif" medium="image">
			<media:title type="html">replace code</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/sidebar-code.gif" medium="image">
			<media:title type="html">sidebar</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/footer.gif" medium="image">
			<media:title type="html">footer</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/recent-posts.gif" medium="image">
			<media:title type="html">recent posts</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/recent-comments.gif" medium="image">
			<media:title type="html">recent comments</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/index.gif" medium="image">
			<media:title type="html">index</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/the-loop-explain.gif" medium="image">
			<media:title type="html">the loop</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/the-loop.gif" medium="image">
			<media:title type="html">the Loop</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/single.gif" medium="image">
			<media:title type="html">single.php</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/archives-template.gif" medium="image">
			<media:title type="html">Archives template</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/archives-queryposts.gif" medium="image">
			<media:title type="html">Archives query posts</media:title>
		</media:content>

		<media:content url="http://www.webdesignerwall.com/wp-content/uploads/2008/11/archives-page.gif" medium="image">
			<media:title type="html">Archives page</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Customization</title>
		<link>http://kapiluttam.wordpress.com/2009/11/19/wordpress-customization/</link>
		<comments>http://kapiluttam.wordpress.com/2009/11/19/wordpress-customization/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 05:24:32 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[Word Press]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/?p=20</guid>
		<description><![CDATA[A. Introduction To WordPress Site: http://wordpress.org/ Description “WordPress is a state-of-the-art semantic personal publishing platform with a focus on aesthetics, web standards, and usability. What a mouthful. WordPress is both free and priceless at the same time. More simply, WordPress is what you use when you want to work with your blogging software, not fight [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=20&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<h2>A. Introduction To WordPress</h2>
<p><a title="Wordpress Default Theme" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/home_page_default.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/home_page_default.thumbnail.png" alt="Wordpress Default Theme" /></a></p>
<p>Site: http://wordpress.org/</p>
<p>Description</p>
<p>“WordPress is a state-of-the-art semantic personal publishing platform with a focus on aesthetics, web standards, and usability. What a mouthful. WordPress is both free and priceless at the same time. More simply, WordPress is what you use when you want to work with your blogging software, not fight it.”</p>
<p>Benefits</p>
<ul>
<li> Easy to use back end for writing content and making other dynamic changes to your site.</li>
<li> Simple setup, anyone with a little bit of server experience can install it.</li>
<li> Themes and Plugins are numerous and mostly free.</li>
<li> Easy to build your own theme or customize an existing one.</li>
<li> Uses standard/free web server technologies: PHP &amp; MySQL.</li>
</ul>
<p>Using WordPress</p>
<ol>
<li> Login to the administration features by going to: http://&lt;your blogurl&gt;/wp-admin/</li>
<li> To write a post click on the “Write” tab. You can write in a visual editor or you can write straight HTML. I recommend learning HTML and editing pages in it, you’re posts will come out a lot better and be easier to modify later. Choose your editor under My Profile -&gt; “Use visual editor when writing”. If you have a normal sized monitor you may also want to turn up the number of lines you can see at once in the editor at: Options -&gt; Writing -&gt; “Size of the post box”, I recommend setting it to about 30 lines instead of 20.<br />
<a title="Write A Post In HTML" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/write_post_html.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/write_post_html.thumbnail.png" alt="Write A Post In HTML" /></a></li>
<li> General options for your blog are under: Options -&gt; General.<br />
<a title="General WordPress Blog Options" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/general_options.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/general_options.thumbnail.png" alt="General WordPress Blog Options" /></a></li>
<li> An important option is: Permalinks. These determine the directory structure of your blog. You probably want to change it from default to custom with structure of something like: “/%category%/%postname%/”. This will help your site rank in Google and other search engines. %category% will be the category you choose for your post. Warning: For SEO optimization give each post only one category. If you use multiple categories Google will find your post in multiple locations and may discard it as duplicate content. Your %postname% comes from the “Post slug” field on the post writing screen. It will default to your post title but you can change it to anything you want, just make sure that it’s something that will be valid as a url (no spaces or weird characters). For example if we categorized our post as “Awesome” and made a slug of “this-is-the-most-awesome-slug” it would show up on our blog at /awesome/this-is-the-most-awesome-slug/ which would rank well in Google for phrases like “awesome slug”.</li>
<li> Your theme is chosen under Presentation -&gt; Theme<br />
<a title="Choose WordPress Theme" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/choose_theme.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/choose_theme.thumbnail.png" alt="Choose WordPress Theme" /></a></li>
</ol>
<h2>B. WordPress Themes</h2>
<p>Almost everything about WordPress can be customized through your theme. Themes are where WordPress really starts to shine. Here are a few example themes:<br />
<a title="Bluedog Theme Screenshot" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_bluedog.jpg"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_bluedog.thumbnail.jpg" alt="Bluedog Theme Screenshot" /></a><br />
<a title="ismart Theme Screenshot" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_ismart.jpg"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_ismart.thumbnail.jpg" alt="ismart Theme Screenshot" /></a><br />
<a title="Newstart Theme Screenshot" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_newstart.jpg"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_newstart.thumbnail.jpg" alt="Newstart Theme Screenshot" /></a><br />
You can browse and download thousands of themes from:<br />
<a title="http://themes.wordpress.net/" href="http://themes.wordpress.net/">http://themes.wordpress.net/</a></p>
<p>How do I install a new theme?<br />
Your themes are located in a subdirectory of your WordPress installation: &lt;your WordPress installation directory&gt;/wp-content/themes/. Each theme has it’s own directory, which is the name of theme. You’ll always start out with a<br />
theme called “default” which is the standard WordPress theme. To add a new theme download the zip file for the theme and unzip it into your /wp-content/themes/ directory. That’s it! You should now see the new theme under the Presentation -&gt; Theme tab in the administration back end.</p>
<h2>C. Structure Of A WordPress Theme</h2>
<p>Theme Templates</p>
<p>There are a couple different types of pages in WordPress. Each type of page can have a customized look and feel. This customization is done by templates. Templates are how themes work. Each template is a seperate PHP file inside the theme’s directory. Here are the standard templates:</p>
<ul>
<li> 404 Template = 404.php – It’s handy to create a custom 404 page (Page Not Found) template. You can list common links and ways for users to find what they are looking for.</li>
<li> Archive Template = archive.php</li>
<li> Archive Index Page = archives.php</li>
<li> Comments Template = comments.php – This template defines how comments look under individual posts on the “Post Template”.</li>
<li> Footer Template = footer.php – HTML that is placed at the bottom of each page, saves you time and produces less duplicate HTML code in your templates.</li>
<li> Header Template = header.php – HTML that is placed at the top of each page, usually has the &lt;head&gt; section in it.</li>
<li> Links = links.php</li>
<li> Main Template = index.php – Usually this page lists your most recent posts. This is the “home” page of your site.</li>
<li> Page Template = page.php – Used for single pages, instead of blog posts. Your “About” page uses this template. This is the default page template, you can make your own custom page templates. I’ll cover this more in detail later.</li>
<li> Popup Comments Template = comments-popup.php</li>
<li> Post Template = single.php – This is where you customize pages that display single posts. Click on a post title (permalink) and you will be at it’s single post page using the post template.</li>
<li> Search Form = searchform.php</li>
<li> Search Template = search.php</li>
<li> Sidebar Template = sidebar.php – Usually the right hand side bar of the page. Some themes have more than one side bar so you’ll see templates like left_sidebar.php.</li>
<li> Stylesheet = style.css – Default place to put your CSS. It also contains the name and description of the theme. You must always have this file with the name and description of your theme. Many themes will have multiple CSS files that are linked to from the header.php file or the individual page templates to customize individual pages with different style rules.</li>
</ul>
<h2>D. Making Your New Theme</h2>
<ol>
<li> Find a theme you want to base your new theme off of. A good place to start is the default theme, but you may also want to just tweak another theme that’s closer to the look/feel you are going for.</li>
<li> Copy the existing theme to a new directory in your themes directory for example if I was making a theme called “webdesign_meetup” I might copy the “default” directory into a new directory called “webdesign_meetup”.</li>
<li> In your new theme directory edit the style.css file. You should see something<br />
like this in that file:<br />
/*<br />
Theme Name: WordPress Default<br />
Theme URI: http://wordpress.org/<br />
Description: The default WordPress theme based on the famous Kubrick.<br />
Version: 1.6<br />
Author: Michael Heilemann<br />
Author URI: http://binarybonsai.com/<br />
*/</li>
<li> Edit the theme information. This is the information that will show up under Presentation -&gt; Theme in the administrator.</li>
<li> Go into the WordPress administrator and change your current them to the new one you just created.</li>
<li> Now you can start customizing and see the affects in real time on your site!</li>
</ol>
<h2>E. Modifying The Header</h2>
<p><a title="Wordpress Header Example" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/header_example.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/header_example.thumbnail.png" alt="Wordpress Header Example" /></a></p>
<p>The first thing you might want to do when customizing your theme is change the header. Most sites have a custom header image, usually a company logo or a picture that has to do with the theme of your site. To edit the header just go into your theme directory and edit the header.php file. The header HTML will usually be stored in this file. In some more rare cases theme authors may have placed header information in the individual page templates (if they did you’ll have to hunt around a bit more!). You’ll usually see a piece of HTML under the opening &lt;body&gt; tag that’s something like lt;div id=”header”&gt;…header content…&lt;/div&gt;. You can customize this content with your new header.</p>
<h2>F. Blog / Post Templates</h2>
<p><a title="Single Post Example" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/single_post_example.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/single_post_example.thumbnail.png" alt="Single Post Example" /></a></p>
<p>Maybe you want to display an ad at the bottom of each post, or perhaps you’d like to add or remove the author information under the post header? The place to do these things is in the single.php file. This file controls the layout of your individual post pages.</p>
<p>Let’s examine the components of this file for the default WordPress theme:</p>
<p>&lt;?php get_header();<br />
?&gt;</p>
<div>This just calls your header.php template. It’s nice to use your header.php file to display all the common header HTML code for all your pages. That way you can avoid writing the same &lt;head&gt;…&lt;/head&gt; and beginning &lt;body&gt;… content over and over.</div>
<p>&lt;div id=”content”<br />
class=”widecolumn”&gt;</p>
<p>&lt;?php<br />
if (have_posts()) : while (have_posts()) : the_post(); ?&gt;</p>
<div>Here is where we start “The Loop”. In WordPress each page normally has a “loop” on it that cycles through the content that should be displayed on that page. In our single.php template there would normally just be one “post”, which means the loop would just execute once to display that one post. The if (have_posts()) code first checks to see if we have a post to display, then the while (have_posts()) loops through each of the posts, the_post(); simply prepares the post for display. Most pages will have this same loop code on them. WordPress takes care of deciding what posts should go on which pages in most instances. Occasionally you’ll want to customize what posts are displayed within the loop, but we’ll cover that in a second.</div>
<p>&lt;div class=”navigation”&gt;</p>
<p>&lt;div<br />
class=”alignleft”&gt;&lt;?php previous_post_link(’&amp;laquo; %link’)<br />
?&gt;&lt;/div&gt;</p>
<p>&lt;div<br />
class=”alignright”&gt;&lt;?php next_post_link(’%link &amp;raquo;’)<br />
?&gt;&lt;/div&gt;</p>
<p>&lt;/div&gt;</p>
<div>Here the template is laying out some basic navigation that allows the user to move between blog posts. The previous_post_link() function places a &lt;a href=”..”&gt; tag that if clicked will navigate the user to the previous post in the blog. The next_post_link() is very similar.</div>
<p>&lt;div<br />
class=”entry”&gt;</p>
<p>&lt;?php the_content(’&lt;p<br />
class=”serif”&gt;Read the rest of this entry &amp;raquo;&lt;/p&gt;’);<br />
?&gt;</p>
<div>This code displays the actual post content (the content that you created under the “Writing” tab in the admin interface). The the_content(); function displays the HTML for the current “post” within “The Loop”. The argument within the function “…Read the rest of this entry…” is text that will be displayed in a &lt;a href&gt;&lt;/a&gt; tag at the end of the content if the content spans more than one page.</div>
<p>So how do I add some author information and maybe date of the post to this?<br />
It’s easy! There’s a lot of information stored with each post that is accessible within “The Loop”. To see a list of all the functions you can use to get at this information visit this documentation page: <a title="http://codex.wordpress.org/Template_Tags" href="http://codex.wordpress.org/Template_Tags">http://codex.wordpress.org/Template_Tags</a>. There you’ll see all the template functions that are available to you. So to get the author of the post we’d just call the_author();. Of course we’d want to put some HTML formating around it so we might do:</p>
<div>
&lt;p&gt;This post was written by &lt;?php<br />
the_author(); ?&gt;&lt;/p&gt;</div>
<p>Now to put the date the post was written we could put:</p>
<p>&lt;?php the_date(’Y-m-d’,<br />
‘&lt;h2&gt;Published On ‘, ‘&lt;/h2&gt;’); ?&gt;<br />
There are tons of stuff you can do with posts so check out: <a title="http://codex.wordpress.org/Template_Tags" href="http://codex.wordpress.org/Template_Tags">http://codex.wordpress.org/Template_Tags</a> and get started.</p>
<h2>G. The Post Loop</h2>
<p>So you want a custom loop? The loop is powered off of the current page query. The query is generated by WordPress, typically from your URL. So if your on your site and your at /category1/a-blog-post-with-id-12 the query to get blog post id 12 in category 1. The internal mechanics of how this happens are fairly complex, so we won’t go into them. It’s enough to know that each page has a query generated for it that will grab the correct content for that page. So if you want to customize your loop and grab something besides what WordPress would do by default you need to modify the query before you call your loop.</p>
<p>Let’s say you want to put just the 3 most recent blog posts on a page, maybe under some other content. On my site the home page has static content and then displays some recent blog posts. Here’s how you do it:</p>
<p>&lt;?php query_posts(”showposts=3″);<br />
?&gt;</p>
<p>This does a new query to grab the 3 most recent posts to the blog. I can then display these posts in a normal loop:</p>
<p>&lt;?php if (have_posts()) {<br />
?&gt;</p>
<p>&lt;h3&gt;Recent<br />
News&lt;/h3&gt;</p>
<p>&lt;?php while (have_posts()) :<br />
the_post(); ?&gt;</p>
<p>&lt;div<br />
class=”blog_post”&gt;</p>
<p>&lt;?php the_content();<br />
?&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;?php endwhile;<br />
?&gt;</p>
<p>&lt;?php } ?&gt;<br />
<a title="Loop Example 3 Posts" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/loop_example_3_posts.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/loop_example_3_posts.thumbnail.png" alt="Loop Example 3 Posts" /></a></p>
<p>There are almost infinite ways you can write queries to get the posts you want for your loop. Visit these two pages for more information:</p>
<p><a title="http://codex.wordpress.org/The_Loop" href="http://codex.wordpress.org/The_Loop">http://codex.wordpress.org/The_Loop</a><br />
<a title="http://codex.wordpress.org/Function_Reference/WP_Query" href="http://codex.wordpress.org/Function_Reference/WP_Query%20">http://codex.wordpress.org/Function_Reference/WP_Query</a></p>
<h2>H. Page Templates</h2>
<p>Page templates are used to format specific pages. For example if you want your About page to have a specific template you can assign it a page template. Posts can not have templates, only pages (under Write -&gt; Write Page). To start a new page create a new php file, for example we could call our new file about_us.php. In the file put this code at the top:<br />
&lt;?php</p>
<p>/*</p>
<p>Template Name: About<br />
Us</p>
<p>*/</p>
<p>?&gt;<br />
WordPress will see this file as a page template and will display it in the list of page templates you choose from when you are editing a page. To create a page in the admin interface go to Write -&gt; Write Page. Then on the right side bar you can pick a custom page template. Pick your new “About Us” template.</p>
<p><a title="Choose Page Template" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/choose_page_template.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/choose_page_template.png" alt="Choose Page Template" /></a></p>
<p>You probably want a number of standard template elements on your custom page template. Here’s a good framework to start you template with:</p>
<p><a title="Page Template Code" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/page_template_code.gif"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/page_template_code.gif" alt="Page Template Code" /></a></p>
<p>The loop on your page template will by default grab the content your write for your page in the admin interface.</p>
<h2>I. Sidebars</h2>
<p><a title="Wordpress Sidebar Example" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/sidebars.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/sidebars.png" alt="Wordpress Sidebar Example" /></a></p>
<p>&nbsp;</p>
<p>Most templates have one or sidebars. Sidebars usually contain navigational links, but they can also include search boxes, lists of related pages, and other widgets (like mybloglog etc.). It’s really easy to edit your sidebars. Just find the sidebar.php file and open it your editor. You’ll see the HTML that creates the side bar and puts the content within it. There are a few template functions that are helpful within the sidebar like wp_get_archives(); which will display a list of time periods that you wrote blog posts (think August (8), September (2) which are links to those months posts). Most sidebar functions are meant to be placed within &lt;ul&gt;&lt;/ul&gt; tags because they format their output as lists. So in your side bar you might have this code:</p>
<p><a title="Sidebar Code" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/sidebar_code.gif"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/sidebar_code.gif" alt="Sidebar Code" /></a></p>
<p>This code would generate two lists, one of archive months, and one of categories you have posted under.</p>
<p>You can find more of these functions at:<br />
<a title="http://codex.wordpress.org/Template_Tags" href="http://codex.wordpress.org/Template_Tags">http://codex.wordpress.org/Template_Tags</a></p>
<h2>J. Meta Data / Custom Fields For Page Customization</h2>
<p><a title="Edit Meta Data" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/edit_meta_data.png"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/edit_meta_data.png" alt="Edit Meta Data" /></a></p>
<p>Meta data can be added to any blog post or page. It’s located under the edit box on the Write Post and Write Page sections of the admin interface. Look for the section called “Custom Fields”, that’s your post meta data. Each piece of meta data has a key and a value. You can use meta data to store almost anything, and you can retrieve it within the page using some template functions/tags. Here some code I use so that each page can have a custom title, description, keywords, and style rules. This code is placed within my &lt;head&gt;&lt;/head&gt; tags in my header.php file:</p>
<p><a title="Meta Customization Code" href="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/meta_customization_code.gif"><img src="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/meta_customization_code.gif" alt="Meta Customization Code" /></a></p>
<p>The first section of the code loads the meta data. For example to get the title meta data I call  $title = get_post_meta($wp_query-&gt;post-&gt;ID, “title”, true);. I can then use the $title variable within my code to display the title information I retrieved. The styles meta data I retrieve is a little<br />
more complex because it is grabbing an array of styles. So if there are more than one meta data elements with the title “style” I will get all these styles within one array. The last parameter of get_post_meta determines if an array is to be returned or just single value. I loop through the array and display each style using this code: &lt;?php foreach ($styles as $s) echo $s . “\n”; ?&gt;.</p>
</div>
<br />Posted in Word Press  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=20&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/11/19/wordpress-customization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/home_page_default.thumbnail.png" medium="image">
			<media:title type="html">Wordpress Default Theme</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/write_post_html.thumbnail.png" medium="image">
			<media:title type="html">Write A Post In HTML</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/general_options.thumbnail.png" medium="image">
			<media:title type="html">General WordPress Blog Options</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/choose_theme.thumbnail.png" medium="image">
			<media:title type="html">Choose WordPress Theme</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_bluedog.thumbnail.jpg" medium="image">
			<media:title type="html">Bluedog Theme Screenshot</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_ismart.thumbnail.jpg" medium="image">
			<media:title type="html">ismart Theme Screenshot</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/theme_newstart.thumbnail.jpg" medium="image">
			<media:title type="html">Newstart Theme Screenshot</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/header_example.thumbnail.png" medium="image">
			<media:title type="html">Wordpress Header Example</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/single_post_example.thumbnail.png" medium="image">
			<media:title type="html">Single Post Example</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/loop_example_3_posts.thumbnail.png" medium="image">
			<media:title type="html">Loop Example 3 Posts</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/choose_page_template.png" medium="image">
			<media:title type="html">Choose Page Template</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/page_template_code.gif" medium="image">
			<media:title type="html">Page Template Code</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/sidebars.png" medium="image">
			<media:title type="html">Wordpress Sidebar Example</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/sidebar_code.gif" medium="image">
			<media:title type="html">Sidebar Code</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/edit_meta_data.png" medium="image">
			<media:title type="html">Edit Meta Data</media:title>
		</media:content>

		<media:content url="http://www.merchantos.com/makebeta/wp-content/uploads/101/makebeta/2007/05/meta_customization_code.gif" medium="image">
			<media:title type="html">Meta Customization Code</media:title>
		</media:content>
	</item>
		<item>
		<title>FTP and Understanding File Permissions</title>
		<link>http://kapiluttam.wordpress.com/2009/10/09/ftp-and-understanding-file-permissions/</link>
		<comments>http://kapiluttam.wordpress.com/2009/10/09/ftp-and-understanding-file-permissions/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 04:51:18 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/?p=13</guid>
		<description><![CDATA[FTP and Understanding File Permissions Introduction Are you wondering what FTP is and how you can use it to upload/files from your site quickly and easily? Would you like to know how to set permissions on files and folders? If so, then this tutorial is for you. This tutorial started out as a simple primer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=13&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>FTP and Understanding File Permissions</h1>
<p style="color:gray;">
<div style="font-weight:bold;">Introduction</div>
<p>Are you wondering what FTP is and how you can use it to upload/files from your site quickly and easily? Would you like to know how to set permissions on files and folders? If so, then this tutorial is for you.</p>
<p>This tutorial started out as a simple primer for newbies that need to learn a few specifics about FTP technology and how to use it, but I&#8217;ve also inserted some interesting stuff about FTP permissions syntax that some of you seasoned guys probably don&#8217;t know or just never got around to looking at. Things that make you go &#8216;hmmm&#8217; and &#8216;wow, I get it… cool.&#8217;</p>
<p>I know some of you may be convinced that you have sufficient tools to upload and download files using your built in FTP client in your HTML editor, but I will show you an example of a freeware FTP client that will give you more control over the advanced features of your site, allowing you to upload and install scripts properly, rather than just uploading HTML files.</p>
<p>Please note: This permissions tutorial applies to UNIX/Linux-based servers only and although Windows does have a permission system, it&#8217;s different and cannot be set by anyone using an FTP client.</p>
<div style="font-weight:bold;">What is FTP?</div>
<p>FTP stands for File Transfer Protocol. In easy to understand terms, FTP is the way that computers talk to each other to transfer files. It&#8217;s quicker than transferring a file by email or on a disk. It&#8217;s direct access to the space that you are transferring files to.</p>
<p>Ok, so how do we get connected in order to transfer files using FTP? Good question. We need a &#8216;client&#8217; or a browser that speaks &#8216;FTP&#8217;. We need an FTP client.</p>
<div style="font-weight:bold;">Getting an FTP client</div>
<p>There are tons of FTP clients out there, and some are even built into your HTML editors to allow you to upload your files to your web space. Most of these only transfer files to and from the space that you are connected to. While, in most cases, this is sufficient for updating the content of a website, they just don&#8217;t cut it as far as I&#8217;m concerned.<br />
You need something that will allow you to change permissions at the very least. When you start to get a little more involved you might want to explore some FTP commands and also use SFTP or SSH (Secure FTP or encrypted connections).</p>
<p>I found FileZilla was a decent choice because it has the ability to allow you to grow a little. You can download a copy from the current project page for free at http://filezilla.sourceforge.net/</p>
<div style="font-weight:bold;">Connecting to your website</div>
<p>In order to connect to a web site using FTP, you must have 3 things: A server/FTP address, a username and a password.<br />
This will then connect you to the folder on the computer that the username is allowed to access. This will usually be where your website domain is pointing when you view it from a browser.</p>
<p><img src="http://www.interspire.com/content/content_images/images/ftp_primer/image001.jpg" alt="" width="334" height="385" /></p>
<p>To connect using FileZilla, you can simply use the quick connect bar at the top of the program to enter your FTP server address, username and password. Don&#8217;t worry about the port number, it simply defaults to 21. If you must use a specific port for FTP then you can enter it there.</p>
<p><img src="http://www.interspire.com/content/content_images/images/ftp_primer/image002.jpg" alt="" width="520" height="69" /></p>
<p>Once you are connected you should see a list of files (if there are any) or folders in your remote directory listing. Sometimes you will connect just outside your viewable website folder which might be public_html, www, htdocs or httpdocs. If you don&#8217;t know where your viewable website folder is, then you should ask your host – just email them and say something like &#8220;Look, I&#8217;m new to using FTP, and I need to know which folder my website is stored in so I can upload files to my site&#8221;. That should be enough for them to tell you where it is.</p>
<p>Another way to see where your viewable folder might be is to check the email that was sent to you by your host when you signed up. If you were able to get the FTP details, then you might see a path that contains your website directory. Eg. /home/www/username/public_html. The last thing to remember about your viewable website directory is that you cannot access it from your domain using the actual folder name. For example, if your domain is www.yourdomain.com and your website folder is &#8220;public_html&#8221;, then you cannot access www.yourdomain.com/public_html because it is already pointing directly at the folder when you type www.yourdomain.com – you don&#8217;t need to add the folder name on the end.</p>
<p>Here&#8217;s an example site that I logged into using FileZilla.</p>
<p><img src="http://www.interspire.com/content/content_images/images/ftp_primer/image003.jpg" alt="" width="357" height="341" /></p>
<div style="font-weight:bold;">Uploading and Downloading Files</div>
<p>If all is well and you have connected via FTP to your website directory, then you should be able to look on your local drive on your computer for a file that you want to place on your website. The best choice at this stage would be a normal HTML file that is already viewable locally within a browser. So instead of this address &#8211; C:Documents and SettingsUser1My Documentsmyhomepage.htm, you will upload the file and then access it from your domain name like this- http://www.yourdomain.com/myhomepage.htm</p>
<p>Upload a HTML file via FTP and you will be able to see it through your browser. You will have published a file that anyone on the Internet can see. The earlier diagram shows connecting to the same space using a browser and an FTP client.</p>
<div style="font-weight:bold;">What are file permissions? Why do we need them?</div>
<p>File permissions are necessary to protect and to instruct the server about how to handle certain files. They can be set using raw FTP commands, but the easiest way to set them is using an inbuilt tool from your FTP client. This is where some FTP clients do not support the changing of permissions on files. One good example is the built-in FTP client in Dreamweaver, which will only allow you to set permissions using a specific raw FTP command. If you have multiple files and folders to set permissions on, typing the FTP command multiple times would become tedious.</p>
<p>It is a good idea to become at least a little familiar with what permissions are used for what purpose. The reason for this is that most scripts will actually need certain permissions to run. If they are simply uploaded as normal by say, Dreamweaver, they will inherit &#8216;normal&#8217; permissions by default, but it may not be suitable in order to actually &#8216;run&#8217; or &#8216;execute&#8217; the commands that are inside the script. Most default permissions will only allow you to read a file, which will unfortunately not be enough to run a script.<br />
The most common permission required to run a script is CHMOD 755 (-rwx r-x r-x)</p>
<div style="font-weight:bold;">What&#8217;s CHMOD?</div>
<p>CHMOD stands for Change Mode and simply means that you are changing your permissions on the file or folder. &#8220;CHMOD&#8221; is also a UNIX command that is used in code and through the command line to change permissions on files and folders.</p>
<p><strong>For example, in PHP it&#8217;s used like this: chmod(&#8220;/path/to/filename&#8221;, 0755);</strong></p>
<div>Types of permissions for different user groups</div>
<p>There are three types of permissions to set on folders and files on UNIX servers – Read, Write and Execute permissions. There are three distinct groups that are affected with these permissions to allow you to control who has access to the file or folder.</p>
<p>These groups are as follows:<br />
The owner of the file &#8211; usually whoever uploaded it, or whomever created it.<br />
The group – usually other registered hosting users on the actual server or common resources that are setup to run under this permission group.<br />
The public – this is the public or Internet user.</p>
<p>So each group has three settings or switches, to allow you to control their access based on whether you want them to read, write or execute the resource that you are setting permissions on. For example, you can allow the owner group to read and write to the files, while the group and public can only read.</p>
<div style="font-weight:bold;">Setting Permissions in FileZilla</div>
<p>FileZilla will allow you to change the file permissions or &#8220;attributes&#8221; as this program calls them, on files and folders. You can even choose multiple files and folders in the same window view to change multiple permissions at the same time.</p>
<p>Setting a file or folder permission in FileZilla is easy. You simply check the box to turn that setting on, like a switch. Select a file, then right click on it. A menu will appear and you will need to choose &#8220;File Attributes&#8221;.</p>
<p><img src="http://www.interspire.com/content/content_images/images/ftp_primer/image004.jpg" alt="" width="148" height="213" /></p>
<p>A popup will appear with options available for all permissions on each group. You simply have to check the boxes or enter the numbered permission that you require in the box provided.</p>
<p><img src="http://www.interspire.com/content/content_images/images/ftp_primer/image005.jpg" alt="" width="305" height="334" /></p>
<div style="font-weight:bold;">FTP Notation &#8211; text and number versions</div>
<p>As you saw above, FileZilla sets permissions using checkboxes to allow you to quickly and visually turn the switch on for a specific permission for each user. However, you may come across some weird looking notation like the following:</p>
<p>&#8220;-rwxr-xrwx&#8221; or someone may tell you to use the permission, CHMOD 757 on a file to allow it to run properly. These are just two ways to represent the same thing.</p>
<p>Let&#8217;s explore the first text based notation. It has a dash, then 9 characters after it. The first dash could be a &#8216;d&#8217; to represent a directory, or a dash to represent a file. Sometimes it&#8217;s just left out and isn&#8217;t even there.<br />
The next 9 characters represent the three groups – owner, group and public in order as well as the permission for each. Look at the diagram below compared to your checkbox model of applying permissions.</p>
<p><img src="http://www.interspire.com/content/content_images/images/ftp_primer/image006.jpg" alt="" width="272" height="184" /></p>
<p>Once you know the syntax of the FTP permission, you can quickly read it and then interpret what it means in terms of actual permissions for your script or file.<br />
You can use the above diagram until you know them off the top of your head.<br />
Some scripts don&#8217;t tell what CHMOD to use numerically, so it&#8217;s great to be able to interpret the permissions from text notation.</p>
<p>The number notation is quite interesting actually and it has an almost algebraic feel to it. The actual numbers used are based on the bits, which I won&#8217;t get into, but basically each CHMOD number is broken up into 3 numbers in order of owner, group and public and the permissions for each group are based on it&#8217;s total sum. It&#8217;s pretty hard to explain in words, so I&#8217;ll have to show you the numbers used to represent the read, write and execute attribute to allow you to understand more fully.</p>
<p><img src="http://www.interspire.com/content/content_images/images/ftp_primer/image007.jpg" alt="" width="243" height="102" /><br />
This would mean the owner and public can read, write and execute, while the group can only read and execute.<br />
Let&#8217;s break this number into columns. The first &#8216;column&#8217; is the owner, the second &#8216;column&#8217; is the group and the third &#8216;column&#8217; is the public.</p>
<p>Now we&#8217;ll learn where these numbers are coming from and what they mean.<br />
In FTP number notation, &#8220;Read&#8221; is represented by the number 4, &#8220;Write&#8221; is represented by the number 2 and &#8220;Execute&#8221; is represented by the number 1.<br />
The actual permission for each group is based on the total number for each column. A combination of the three permissions will create a different total for that column, which represents the permission for that group.</p>
<p>Look at the following table and what that number represents. I will also explain with representation why that total means that particular permission.</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="73" align="center" valign="top"><strong>Number</strong></td>
<td width="132" valign="top"><strong>Permission</strong></td>
<td width="126" align="center" valign="top"><strong>Text display</strong></td>
</tr>
<tr>
<td width="73" align="center" valign="top">0</td>
<td width="132" valign="top">None</td>
<td width="126" align="center" valign="top">&#8212;</td>
</tr>
<tr>
<td width="73" align="center" valign="top">1</td>
<td width="132" valign="top">Execute</td>
<td width="126" align="center" valign="top">&#8211;x</td>
</tr>
<tr>
<td width="73" align="center" valign="top">2</td>
<td width="132" valign="top">Write</td>
<td width="126" align="center" valign="top">-w-</td>
</tr>
<tr>
<td width="73" align="center" valign="top">3</td>
<td width="132" valign="top">Write, execute</td>
<td width="126" align="center" valign="top">-wx</td>
</tr>
<tr>
<td width="73" align="center" valign="top">4</td>
<td width="132" valign="top">Read</td>
<td width="126" align="center" valign="top">r&#8211;</td>
</tr>
<tr>
<td width="73" align="center" valign="top">5</td>
<td width="132" valign="top">Read, execute</td>
<td width="126" align="center" valign="top">r-x</td>
</tr>
<tr>
<td width="73" align="center" valign="top">6</td>
<td width="132" valign="top">Read, write</td>
<td width="126" align="center" valign="top">rw-</td>
</tr>
<tr>
<td width="73" align="center" valign="top">7</td>
<td width="132" valign="top">Read, write, execute</td>
<td width="126" align="center" valign="top">rwx</td>
</tr>
</tbody>
</table>
<p>User can read only is represented by a 4. You are simply turning on reading by the 4 that represents the read attribute.<br />
User can write only is represented by a 2 and user can execute only is represented by a 1.</p>
<p>User can execute and write is represented by a 3.<br />
Eg. since execute = 1 and write = 2<br />
1 + 2 = 3 which is the same as saying &#8216;execute&#8217; + &#8216;write&#8217; = 3<br />
The server knows to allow this user to execute and write</p>
<p>User can read and execute is represented by a 5.<br />
Eg. since read = 4 and execute = 1<br />
4 + 1 = 5 which is the same as saying &#8216;read&#8217; + &#8216;execute&#8217; = 5</p>
<p>User can read and write is represented by a 6.<br />
Eg. since read = 4 and write = 2<br />
4 + 2 = 6 which is the same as saying &#8216;read&#8217; + &#8216;write&#8217; = 6</p>
<p>User can read, write and execute is represented by a 7<br />
Eg. since read = 4 and write = 2 and execute = 1<br />
4 + 2 + 1 = 7 which is the same as saying &#8216;read&#8217; + &#8216;write&#8217; + &#8220;execute&#8221; = 7</p>
<p>So for each column, which represents each group, you simply enter the permission that you want for that group based on the number notation explained above.</p>
<div style="font-weight:bold;">Conclusion</div>
<p>So, there&#8217;s some little FTP tips for those of you who might have had trouble installing scripts in the past. It might have been a permissions problem, so you should definitely revisit that script and it might just work now.</p>
<p>Hopefully I have given you some insight into the FTP technology and hopefully you will start using FileZilla or a similar FTP application that will give you more control over your websites, and allow you to install some scripts for better functionality on your site.</p>
<p>Please note: This permissions tutorial applies to UNIX/Linux based servers only and although Windows does have a permission system, it&#8217;s different and cannot be set by anyone using an FTP client.</p>
<br />Posted in PHP  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=13&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/10/09/ftp-and-understanding-file-permissions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>

		<media:content url="http://www.interspire.com/content/content_images/images/ftp_primer/image001.jpg" medium="image" />

		<media:content url="http://www.interspire.com/content/content_images/images/ftp_primer/image002.jpg" medium="image" />

		<media:content url="http://www.interspire.com/content/content_images/images/ftp_primer/image003.jpg" medium="image" />

		<media:content url="http://www.interspire.com/content/content_images/images/ftp_primer/image004.jpg" medium="image" />

		<media:content url="http://www.interspire.com/content/content_images/images/ftp_primer/image005.jpg" medium="image" />

		<media:content url="http://www.interspire.com/content/content_images/images/ftp_primer/image006.jpg" medium="image" />

		<media:content url="http://www.interspire.com/content/content_images/images/ftp_primer/image007.jpg" medium="image" />
	</item>
		<item>
		<title>Best Practices for Speeding Up Your Web Site</title>
		<link>http://kapiluttam.wordpress.com/2009/09/30/best-practices-for-speeding-up-your-web-site/</link>
		<comments>http://kapiluttam.wordpress.com/2009/09/30/best-practices-for-speeding-up-your-web-site/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 07:44:08 +0000</pubDate>
		<dc:creator>kapiluttam</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://kapiluttam.wordpress.com/?p=10</guid>
		<description><![CDATA[Minimize HTTP Requests tag: content 80% of the end-user response time is spent on the front-end. Most of this time is tied up in downloading all the components in the page: images, stylesheets, scripts, Flash, etc. Reducing the number of components in turn reduces the number of HTTP requests required to render the page. This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=10&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Minimize HTTP Requests</strong></p>
<p>tag: content</p>
<p>80% of the end-user response time is spent on the front-end. Most of this time is tied up in downloading all the components in the page: images, stylesheets, scripts, Flash, etc. Reducing the number of components in turn reduces the number of HTTP requests required to render the page. This is the key to faster pages.</p>
<p>One way to reduce the number of components in the page is to simplify the page&#8217;s design. But is there a way to build pages with richer content while also achieving fast response times? Here are some techniques for reducing the number of HTTP requests, while still supporting rich page designs.</p>
<p><strong>Combined files</strong> are a way to reduce the number of HTTP requests by combining all scripts into a single script, and similarly combining all CSS into a single stylesheet. Combining files is more challenging when the scripts and stylesheets vary from page to page, but making this part of your release process improves response times.</p>
<p><a href="http://alistapart.com/articles/sprites"><strong>CSS Sprites</strong></a> are the preferred method for reducing the number of image requests. Combine your background images into a single image and use the CSS background-image and background-position properties to display the desired image segment.</p>
<p><a href="http://www.w3.org/TR/html401/struct/objects.html#h-13.6"><strong>Image maps</strong></a> combine multiple images into a single image. The overall size is about the same, but reducing the number of HTTP requests speeds up the page. Image maps only work if the images are contiguous in the page, such as a navigation bar. Defining the coordinates of image maps can be tedious and error prone. Using image maps for navigation is not accessible too, so it&#8217;s not recommended.</p>
<p><strong>Inline images</strong> use the <a href="http://tools.ietf.org/html/rfc2397">data: URL scheme</a> to embed the image data in the actual page. This can increase the size of your HTML document. Combining inline images into your (cached) stylesheets is a way to reduce HTTP requests and avoid increasing the size of your pages. Inline images are not yet supported across all major browsers.</p>
<p>Reducing the number of HTTP requests in your page is the place to start. This is the most important guideline for improving performance for first time visitors. As described in Tenni Theurer&#8217;s blog post <a href="http://yuiblog.com/blog/2007/01/04/performance-research-part-2/">Browser Cache Usage &#8211; Exposed!</a>, 40-60% of daily visitors to your site come in with an empty cache. Making your page fast for these first time visitors is key to a better user experience.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/04/rule_1_make_few.html"> </a></p>
<p><strong>Use a Content Delivery Network</strong></p>
<p>tag: server</p>
<p>The user&#8217;s proximity to your web server has an impact on response times. Deploying your content across multiple, geographically dispersed servers will make your pages load faster from the user&#8217;s perspective. But where should you start?</p>
<p>As a first step to implementing geographically dispersed content, don&#8217;t attempt to redesign your web application to work in a distributed architecture. Depending on the application, changing the architecture could include daunting tasks such as synchronizing session state and replicating database transactions across server locations. Attempts to reduce the distance between users and your content could be delayed by, or never pass, this application architecture step.</p>
<p>Remember that 80-90% of the end-user response time is spent downloading all the components in the page: images, stylesheets, scripts, Flash, etc. This is the <em>Performance Golden Rule</em>. Rather than starting with the difficult task of redesigning your application architecture, it&#8217;s better to first disperse your static content. This not only achieves a bigger reduction in response times, but it&#8217;s easier thanks to content delivery networks.</p>
<p>A content delivery network (CDN) is a collection of web servers distributed across multiple locations to deliver content more efficiently to users. The server selected for delivering content to a specific user is typically based on a measure of network proximity. For example, the server with the fewest network hops or the server with the quickest response time is chosen.</p>
<p>Some large Internet companies own their own CDN, but it&#8217;s cost-effective to use a CDN service provider, such as <a href="http://www.akamai.com/">Akamai Technologies</a>, <a href="http://www.mirror-image.com/">Mirror Image Internet</a>, or <a href="http://www.limelightnetworks.com/">Limelight Networks</a>. For start-up companies and private web sites, the cost of a CDN service can be prohibitive, but as your target audience grows larger and becomes more global, a CDN is necessary to achieve fast response times. At Yahoo!, properties that moved static content off their application web servers to a CDN improved end-user response times by 20% or more. Switching to a CDN is a relatively easy code change that will dramatically improve the speed of your web site.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/04/high_performanc_1.html"> </a></p>
<p><strong>Add an Expires or a Cache-Control Header</strong></p>
<p>tag: server</p>
<p>There are two things in this rule:</p>
<ul>
<li>For static components: implement &#8220;Never      expire&#8221; policy by setting far future Expires      header</li>
<li>For dynamic components: use an appropriate Cache-Control header to help the browser with conditional requests</li>
</ul>
<p>Web page designs are getting richer and richer, which means more scripts, stylesheets, images, and Flash in the page. A first-time visitor to your page may have to make several HTTP requests, but by using the Expires header you make those components cacheable. This avoids unnecessary HTTP requests on subsequent page views. Expires headers are most often used with images, but they should be used on <em>all</em> components including scripts, stylesheets, and Flash components.</p>
<p>Browsers (and proxies) use a cache to reduce the number and size of HTTP requests, making web pages load faster. A web server uses the Expires header in the HTTP response to tell the client how long a component can be cached. This is a far future Expires header, telling the browser that this response won&#8217;t be stale until April 15, 2010.</p>
<p>Expires: Thu, 15 Apr 2010 20:00:00 GMT</p>
<p>If your server is Apache, use the ExpiresDefault directive to set an expiration date relative to the current date. This example of the ExpiresDefault directive sets the Expires date 10 years out from the time of the request.</p>
<p>ExpiresDefault &#8220;access plus 10 years&#8221;</p>
<p>Keep in mind, if you use a far future Expires header you have to change the component&#8217;s filename whenever the component changes. At Yahoo! we often make this step part of the build process: a version number is embedded in the component&#8217;s filename, for example, yahoo_2.0.6.js.</p>
<p>Using a far future Expires header affects page views only after a user has already visited your site. It has no effect on the number of HTTP requests when a user visits your site for the first time and the browser&#8217;s cache is empty. Therefore the impact of this performance improvement depends on how often users hit your pages with a primed cache. (A &#8220;primed cache&#8221; already contains all of the components in the page.) We <a href="http://yuiblog.com/blog/2007/01/04/performance-research-part-2/">measured this at Yahoo!</a> and found the number of page views with a primed cache is 75-85%. By using a far future Expires header, you increase the number of components that are cached by the browser and re-used on subsequent page views without sending a single byte over the user&#8217;s Internet connection.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/05/high_performanc_2.html"> </a></p>
<p><strong>Gzip Components</strong></p>
<p>tag: server</p>
<p>The time it takes to transfer an HTTP request and response across the network can be significantly reduced by decisions made by front-end engineers. It&#8217;s true that the end-user&#8217;s bandwidth speed, Internet service provider, proximity to peering exchange points, etc. are beyond the control of the development team. But there are other variables that affect response times. Compression reduces response times by reducing the size of the HTTP response.</p>
<p>Starting with HTTP/1.1, web clients indicate support for compression with the Accept-Encoding header in the HTTP request.</p>
<p>Accept-Encoding: gzip, deflate</p>
<p>If the web server sees this header in the request, it may compress the response using one of the methods listed by the client. The web server notifies the web client of this via the Content-Encoding header in the response.</p>
<p>Content-Encoding: gzip</p>
<p>Gzip is the most popular and effective compression method at this time. It was developed by the GNU project and standardized by <a href="http://www.ietf.org/rfc/rfc1952.txt">RFC 1952</a>. The only other compression format you&#8217;re likely to see is deflate, but it&#8217;s less effective and less popular.</p>
<p>Gzipping generally reduces the response size by about 70%. Approximately 90% of today&#8217;s Internet traffic travels through browsers that claim to support gzip. If you use Apache, the module configuring gzip depends on your version: Apache 1.3 uses <a href="http://sourceforge.net/projects/mod-gzip/">mod_gzip</a> while Apache 2.x uses <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html">mod_deflate</a>.</p>
<p>There are known issues with browsers and proxies that may cause a mismatch in what the browser expects and what it receives with regard to compressed content. Fortunately, these edge cases are dwindling as the use of older browsers drops off. The Apache modules help out by adding appropriate Vary response headers automatically.</p>
<p>Servers choose what to gzip based on file type, but are typically too limited in what they decide to compress. Most web sites gzip their HTML documents. It&#8217;s also worthwhile to gzip your scripts and stylesheets, but many web sites miss this opportunity. In fact, it&#8217;s worthwhile to compress any text response including XML and JSON. Image and PDF files should not be gzipped because they are already compressed. Trying to gzip them not only wastes CPU but can potentially increase file sizes.</p>
<p>Gzipping as many file types as possible is an easy way to reduce page weight and accelerate the user experience.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_3.html"> </a></p>
<p><strong>Put Stylesheets at the Top</strong></p>
<p>tag: css</p>
<p>While researching performance at Yahoo!, we discovered that moving stylesheets to the document HEAD makes pages <em>appear</em> to be loading faster. This is because putting stylesheets in the HEAD allows the page to render progressively.</p>
<p>Front-end engineers that care about performance want a page to load progressively; that is, we want the browser to display whatever content it has as soon as possible. This is especially important for pages with a lot of content and for users on slower Internet connections. The importance of giving users visual feedback, such as progress indicators, has been well researched and <a href="http://www.useit.com/papers/responsetime.html">documented</a>. In our case the HTML page is the progress indicator! When the browser loads the page progressively the header, the navigation bar, the logo at the top, etc. all serve as visual feedback for the user who is waiting for the page. This improves the overall user experience.</p>
<p>The problem with putting stylesheets near the bottom of the document is that it prohibits progressive rendering in many browsers, including Internet Explorer. These browsers block rendering to avoid having to redraw elements of the page if their styles change. The user is stuck viewing a blank white page.</p>
<p>The <a href="http://www.w3.org/TR/html4/struct/links.html#h-12.3">HTML specification</a> clearly states that stylesheets are to be included in the HEAD of the page: &#8220;Unlike A, [LINK] may only appear in the HEAD section of a document, although it may appear any number of times.&#8221; Neither of the alternatives, the blank white screen or flash of unstyled content, are worth the risk. The optimal solution is to follow the HTML specification and load your stylesheets in the document HEAD.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_4.html"> </a></p>
<p><strong>Put Scripts at the Bottom</strong></p>
<p>tag: javascript</p>
<p>The problem caused by scripts is that they block parallel downloads. The <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4">HTTP/1.1 specification</a> suggests that browsers download no more than two components in parallel per hostname. If you serve your images from multiple hostnames, you can get more than two downloads to occur in parallel. While a script is downloading, however, the browser won&#8217;t start any other downloads, even on different hostnames.</p>
<p>In some situations it&#8217;s not easy to move scripts to the bottom. If, for example, the script uses document.write to insert part of the page&#8217;s content, it can&#8217;t be moved lower in the page. There might also be scoping issues. In many cases, there are ways to workaround these situations.</p>
<p>An alternative suggestion that often comes up is to use deferred scripts. The DEFER attribute indicates that the script does not contain document.write, and is a clue to browsers that they can continue rendering. Unfortunately, Firefox doesn&#8217;t support the DEFER attribute. In Internet Explorer, the script may be deferred, but not as much as desired. If a script can be deferred, it can also be moved to the bottom of the page. That will make your web pages load faster.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_5.html"> </a></p>
<p><strong>Avoid CSS Expressions</strong></p>
<p>tag: css</p>
<p>CSS expressions are a powerful (and dangerous) way to set CSS properties dynamically. They&#8217;re supported in Internet Explorer, starting with <a href="http://msdn.microsoft.com/workshop/author/dhtml/overview/recalc.asp">version 5</a>. As an example, the background color could be set to alternate every hour using CSS expressions.</p>
<p>background-color: expression( (new Date()).getHours()%2 ? &#8220;#B8D4FF&#8221; : &#8220;#F08A00&#8243; );</p>
<p>As shown here, the expression method accepts a JavaScript expression. The CSS property is set to the result of evaluating the JavaScript expression. The expression method is ignored by other browsers, so it is useful for setting properties in Internet Explorer needed to create a consistent experience across browsers.</p>
<p>The problem with expressions is that they are evaluated more frequently than most people expect. Not only are they evaluated when the page is rendered and resized, but also when the page is scrolled and even when the user moves the mouse over the page. Adding a counter to the CSS expression allows us to keep track of when and how often a CSS expression is evaluated. Moving the mouse around the page can easily generate more than 10,000 evaluations.</p>
<p>One way to reduce the number of times your CSS expression is evaluated is to use one-time expressions, where the first time the expression is evaluated it sets the style property to an explicit value, which replaces the CSS expression. If the style property must be set dynamically throughout the life of the page, using event handlers instead of CSS expressions is an alternative approach. If you must use CSS expressions, remember that they may be evaluated thousands of times and could affect the performance of your page.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_6.html"> </a></p>
<p><strong>Make JavaScript and CSS External</strong></p>
<p>tag: javascript, css</p>
<p>Many of these performance rules deal with how external components are managed. However, before these considerations arise you should ask a more basic question: Should JavaScript and CSS be contained in external files, or inlined in the page itself?</p>
<p>Using external files in the real world generally produces faster pages because the JavaScript and CSS files are cached by the browser. JavaScript and CSS that are inlined in HTML documents get downloaded every time the HTML document is requested. This reduces the number of HTTP requests that are needed, but increases the size of the HTML document. On the other hand, if the JavaScript and CSS are in external files cached by the browser, the size of the HTML document is reduced without increasing the number of HTTP requests.</p>
<p>The key factor, then, is the frequency with which external JavaScript and CSS components are cached relative to the number of HTML documents requested. This factor, although difficult to quantify, can be gauged using various metrics. If users on your site have multiple page views per session and many of your pages re-use the same scripts and stylesheets, there is a greater potential benefit from cached external files.</p>
<p>Many web sites fall in the middle of these metrics. For these sites, the best solution generally is to deploy the JavaScript and CSS as external files. The only exception where inlining is preferable is with home pages, such as <a href="http://www.yahoo.com/">Yahoo!&#8217;s front page</a> and <a href="http://my.yahoo.com/">My Yahoo!</a>. Home pages that have few (perhaps only one) page view per session may find that inlining JavaScript and CSS results in faster end-user response times.</p>
<p>For front pages that are typically the first of many page views, there are techniques that leverage the reduction of HTTP requests that inlining provides, as well as the caching benefits achieved through using external files. One such technique is to inline JavaScript and CSS in the front page, but dynamically download the external files after the page has finished loading. Subsequent pages would reference the external files that should already be in the browser&#8217;s cache.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/rule_8_make_jav.html"> </a></p>
<p><strong>Reduce DNS Lookups</strong></p>
<p>tag: content</p>
<p>The Domain Name System (DNS) maps hostnames to IP addresses, just as phonebooks map people&#8217;s names to their phone numbers. When you type www.yahoo.com into your browser, a DNS resolver contacted by the browser returns that server&#8217;s IP address. DNS has a cost. It typically takes 20-120 milliseconds for DNS to lookup the IP address for a given hostname. The browser can&#8217;t download anything from this hostname until the DNS lookup is completed.</p>
<p>DNS lookups are cached for better performance. This caching can occur on a special caching server, maintained by the user&#8217;s ISP or local area network, but there is also caching that occurs on the individual user&#8217;s computer. The DNS information remains in the operating system&#8217;s DNS cache (the &#8220;DNS Client service&#8221; on Microsoft Windows). Most browsers have their own caches, separate from the operating system&#8217;s cache. As long as the browser keeps a DNS record in its own cache, it doesn&#8217;t bother the operating system with a request for the record.</p>
<p>Internet Explorer caches DNS lookups for 30 minutes by default, as specified by the DnsCacheTimeout registry setting. Firefox caches DNS lookups for 1 minute, controlled by the network.dnsCacheExpiration configuration setting. (Fasterfox changes this to 1 hour.)</p>
<p>When the client&#8217;s DNS cache is empty (for both the browser and the operating system), the number of DNS lookups is equal to the number of unique hostnames in the web page. This includes the hostnames used in the page&#8217;s URL, images, script files, stylesheets, Flash objects, etc. Reducing the number of unique hostnames reduces the number of DNS lookups.</p>
<p>Reducing the number of unique hostnames has the potential to reduce the amount of parallel downloading that takes place in the page. Avoiding DNS lookups cuts response times, but reducing parallel downloads may increase response times. My guideline is to split these components across at least two but no more than four hostnames. This results in a good compromise between reducing DNS lookups and allowing a high degree of parallel downloads.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_7.html"> </a></p>
<p><strong>Minify JavaScript and CSS</strong></p>
<p>tag: javascript, css</p>
<p>Minification is the practice of removing unnecessary characters from code to reduce its size thereby improving load times. When code is minified all comments are removed, as well as unneeded white space characters (space, newline, and tab). In the case of JavaScript, this improves response time performance because the size of the downloaded file is reduced. Two popular tools for minifying JavaScript code are <a href="http://crockford.com/javascript/jsmin">JSMin</a> and <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>. The YUI compressor can also minify CSS.</p>
<p>Obfuscation is an alternative optimization that can be applied to source code. It&#8217;s more complex than minification and thus more likely to generate bugs as a result of the obfuscation step itself. In a survey of ten top U.S. web sites, minification achieved a 21% size reduction versus 25% for obfuscation. Although obfuscation has a higher size reduction, minifying JavaScript is less risky.</p>
<p>In addition to minifying external scripts and styles, inlined &lt;script&gt; and &lt;style&gt; blocks can and should also be minified. Even if you gzip your scripts and styles, minifying them will still reduce the size by 5% or more. As the use and size of JavaScript and CSS increases, so will the savings gained by minifying your code.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_8.html"> </a></p>
<p><strong>Avoid Redirects</strong></p>
<p>tag: content</p>
<p>Redirects are accomplished using the 301 and 302 status codes. Here&#8217;s an example of the HTTP headers in a 301 response:</p>
<p>HTTP/1.1 301 Moved Permanently</p>
<p>Location: http://example.com/newuri</p>
<p>Content-Type: text/html</p>
<p>The browser automatically takes the user to the URL specified in the Location field. All the information necessary for a redirect is in the headers. The body of the response is typically empty. Despite their names, neither a 301 nor a 302 response is cached in practice unless additional headers, such as Expires or Cache-Control, indicate it should be. The meta refresh tag and JavaScript are other ways to direct users to a different URL, but if you must do a redirect, the preferred technique is to use the standard 3xx HTTP status codes, primarily to ensure the back button works correctly.</p>
<p>The main thing to remember is that redirects slow down the user experience. Inserting a redirect between the user and the HTML document delays everything in the page since nothing in the page can be rendered and no components can start being downloaded until the HTML document has arrived.</p>
<p>One of the most wasteful redirects happens frequently and web developers are generally not aware of it. It occurs when a trailing slash (/) is missing from a URL that should otherwise have one. For example, going to <a href="http://astrology.yahoo.com/astrology">http://astrology.yahoo.com/astrology</a> results in a 301 response containing a redirect to <a href="http://astrology.yahoo.com/astrology/">http://astrology.yahoo.com/astrology/</a> (notice the added trailing slash). This is fixed in Apache by using Alias or mod_rewrite, or the DirectorySlash directive if you&#8217;re using Apache handlers.</p>
<p>Connecting an old web site to a new one is another common use for redirects. Others include connecting different parts of a website and directing the user based on certain conditions (type of browser, type of user account, etc.). Using a redirect to connect two web sites is simple and requires little additional coding. Although using redirects in these situations reduces the complexity for developers, it degrades the user experience. Alternatives for this use of redirects include using Alias and mod_rewrite if the two code paths are hosted on the same server. If a domain name change is the cause of using redirects, an alternative is to create a CNAME (a DNS record that creates an alias pointing from one domain name to another) in combination with Alias or mod_rewrite.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_9.html"> </a></p>
<p><strong>Remove Duplicate Scripts</strong></p>
<p>tag: javascript</p>
<p>It hurts performance to include the same JavaScript file twice in one page. This isn&#8217;t as unusual as you might think. A review of the ten top U.S. web sites shows that two of them contain a duplicated script. Two main factors increase the odds of a script being duplicated in a single web page: team size and number of scripts. When it does happen, duplicate scripts hurt performance by creating unnecessary HTTP requests and wasted JavaScript execution.</p>
<p>Unnecessary HTTP requests happen in Internet Explorer, but not in Firefox. In Internet Explorer, if an external script is included twice and is not cacheable, it generates two HTTP requests during page loading. Even if the script is cacheable, extra HTTP requests occur when the user reloads the page.</p>
<p>In addition to generating wasteful HTTP requests, time is wasted evaluating the script multiple times. This redundant JavaScript execution happens in both Firefox and Internet Explorer, regardless of whether the script is cacheable.</p>
<p>One way to avoid accidentally including the same script twice is to implement a script management module in your templating system. The typical way to include a script is to use the SCRIPT tag in your HTML page.</p>
<p>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;menu_1.0.17.js&#8221;&gt;&lt;/script&gt;</p>
<p>An alternative in PHP would be to create a function called insertScript.</p>
<p>&lt;?php insertScript(&#8220;menu.js&#8221;) ?&gt;</p>
<p>In addition to preventing the same script from being inserted multiple times, this function could handle other issues with scripts, such as dependency checking and adding version numbers to script filenames to support far future Expires headers.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_10.html"> </a></p>
<p><strong>Configure ETags</strong></p>
<p>tag: server</p>
<p>Entity tags (ETags) are a mechanism that web servers and browsers use to determine whether the component in the browser&#8217;s cache matches the one on the origin server. (An &#8220;entity&#8221; is another word a &#8220;component&#8221;: images, scripts, stylesheets, etc.) ETags were added to provide a mechanism for validating entities that is more flexible than the last-modified date. An ETag is a string that uniquely identifies a specific version of a component. The only format constraints are that the string be quoted. The origin server specifies the component&#8217;s ETag using the ETag response header.</p>
<p>HTTP/1.1 200 OK</p>
<p>Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT</p>
<p>ETag: &#8220;10c24bc-4ab-457e1c1f&#8221;</p>
<p>Content-Length: 12195</p>
<p>Later, if the browser has to validate a component, it uses the If-None-Match header to pass the ETag back to the origin server. If the ETags match, a 304 status code is returned reducing the response by 12195 bytes for this example.</p>
<p>GET /i/yahoo.gif HTTP/1.1</p>
<p>Host: us.yimg.com</p>
<p>If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT</p>
<p>If-None-Match: &#8220;10c24bc-4ab-457e1c1f&#8221;</p>
<p>HTTP/1.1 304 Not Modified</p>
<p>The problem with ETags is that they typically are constructed using attributes that make them unique to a specific server hosting a site. ETags won&#8217;t match when a browser gets the original component from one server and later tries to validate that component on a different server, a situation that is all too common on Web sites that use a cluster of servers to handle requests. By default, both Apache and IIS embed data in the ETag that dramatically reduces the odds of the validity test succeeding on web sites with multiple servers.</p>
<p>The ETag format for Apache 1.3 and 2.x is inode-size-timestamp. Although a given file may reside in the same directory across multiple servers, and have the same file size, permissions, timestamp, etc., its inode is different from one server to the next.</p>
<p>IIS 5.0 and 6.0 have a similar issue with ETags. The format for ETags on IIS is Filetimestamp:ChangeNumber. A ChangeNumber is a counter used to track configuration changes to IIS. It&#8217;s unlikely that the ChangeNumber is the same across all IIS servers behind a web site.</p>
<p>The end result is ETags generated by Apache and IIS for the exact same component won&#8217;t match from one server to another. If the ETags don&#8217;t match, the user doesn&#8217;t receive the small, fast 304 response that ETags were designed for; instead, they&#8217;ll get a normal 200 response along with all the data for the component. If you host your web site on just one server, this isn&#8217;t a problem. But if you have multiple servers hosting your web site, and you&#8217;re using Apache or IIS with the default ETag configuration, your users are getting slower pages, your servers have a higher load, you&#8217;re consuming greater bandwidth, and proxies aren&#8217;t caching your content efficiently. Even if your components have a far future Expires header, a conditional GET request is still made whenever the user hits Reload or Refresh.</p>
<p>If you&#8217;re not taking advantage of the flexible validation model that ETags provide, it&#8217;s better to just remove the ETag altogether. The Last-Modified header validates based on the component&#8217;s timestamp. And removing the ETag reduces the size of the HTTP headers in both the response and subsequent requests. This <a href="http://support.microsoft.com/?id=922733">Microsoft Support article</a> describes how to remove ETags. In Apache, this is done by simply adding the following line to your Apache configuration file:</p>
<p>FileETag none</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_11.html"> </a></p>
<p><strong>Make Ajax Cacheable</strong></p>
<p>tag: content</p>
<p>One of the cited benefits of Ajax is that it provides instantaneous feedback to the user because it requests information asynchronously from the backend web server. However, using Ajax is no guarantee that the user won&#8217;t be twiddling his thumbs waiting for those asynchronous JavaScript and XML responses to return. In many applications, whether or not the user is kept waiting depends on how Ajax is used. For example, in a web-based email client the user will be kept waiting for the results of an Ajax request to find all the email messages that match their search criteria. It&#8217;s important to remember that &#8220;asynchronous&#8221; does not imply &#8220;instantaneous&#8221;.</p>
<p>To improve performance, it&#8217;s important to optimize these Ajax responses. The most important way to improve the performance of Ajax is to make the responses cacheable, as discussed in <a href="http://developer.yahoo.com/performance/rules.html#expires">Add an Expires or a Cache-Control Header</a>. Some of the other rules also apply to Ajax:</p>
<ul>
<li><a href="http://developer.yahoo.com/performance/rules.html#gzip">Gzip Components</a></li>
<li><a href="http://developer.yahoo.com/performance/rules.html#dns_lookups">Reduce DNS Lookups</a></li>
<li><a href="http://developer.yahoo.com/performance/rules.html#minify">Minify JavaScript</a></li>
<li><a href="http://developer.yahoo.com/performance/rules.html#redirects">Avoid Redirects</a></li>
<li><a href="http://developer.yahoo.com/performance/rules.html#etags">Configure ETags</a></li>
</ul>
<p>Let&#8217;s look at an example. A Web 2.0 email client might use Ajax to download the user&#8217;s address book for autocompletion. If the user hasn&#8217;t modified her address book since the last time she used the email web app, the previous address book response could be read from cache if that Ajax response was made cacheable with a future Expires or Cache-Control header. The browser must be informed when to use a previously cached address book response versus requesting a new one. This could be done by adding a timestamp to the address book Ajax URL indicating the last time the user modified her address book, for example, &amp;t=1190241612. If the address book hasn&#8217;t been modified since the last download, the timestamp will be the same and the address book will be read from the browser&#8217;s cache eliminating an extra HTTP roundtrip. If the user has modified her address book, the timestamp ensures the new URL doesn&#8217;t match the cached response, and the browser will request the updated address book entries.</p>
<p>Even though your Ajax responses are created dynamically, and might only be applicable to a single user, they can still be cached. Doing so will make your Web 2.0 apps faster.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a> <a href="http://developer.yahoo.net/blog/archives/2007/09/high_performanc_12.html"> </a></p>
<p><strong>Flush the Buffer Early</strong></p>
<p>tag: server</p>
<p>When users request a page, it can take anywhere from 200 to 500ms for the backend server to stitch together the HTML page. During this time, the browser is idle as it waits for the data to arrive. In PHP you have the function <a href="http://php.net/flush">flush()</a>. It allows you to send your partially ready HTML response to the browser so that the browser can start fetching components while your backend is busy with the rest of the HTML page. The benefit is mainly seen on busy backends or light frontends.</p>
<p>A good place to consider flushing is right after the HEAD because the HTML for the head is usually easier to produce and it allows you to include any CSS and JavaScript files for the browser to start fetching in parallel while the backend is still processing.</p>
<p>Example:</p>
<p>&#8230; &lt;!&#8211; css, js &#8211;&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;?php flush(); ?&gt;</p>
<p>&lt;body&gt;</p>
<p>&#8230; &lt;!&#8211; content &#8211;&gt;</p>
<p><a href="http://search.yahoo.com/">Yahoo! search</a> pioneered research and real user testing to prove the benefits of using this technique.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Use GET for AJAX Requests</strong></p>
<p>tag: server</p>
<p>The <a href="http://mail.yahoo.com/">Yahoo! Mail</a> team found that when using XMLHttpRequest, POST is implemented in the browsers as a two-step process: sending the headers first, then sending data. So it&#8217;s best to use GET, which only takes one TCP packet to send (unless you have a lot of cookies). The maximum URL length in IE is 2K, so if you send more than 2K data you might not be able to use GET.</p>
<p>An interesting side affect is that POST without actually posting any data behaves like GET. Based on the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP specs</a>, GET is meant for retrieving information, so it makes sense (semantically) to use GET when you&#8217;re only requesting data, as opposed to sending data to be stored server-side.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Post-load Components</strong></p>
<p>tag: content</p>
<p>You can take a closer look at your page and ask yourself: &#8220;What&#8217;s absolutely required in order to render the page initially?&#8221;. The rest of the content and components can wait.</p>
<p>JavaScript is an ideal candidate for splitting before and after the onload event. For example if you have JavaScript code and libraries that do drag and drop and animations, those can wait, because dragging elements on the page comes after the initial rendering. Other places to look for candidates for post-loading include hidden content (content that appears after a user action) and images below the fold.</p>
<p>Tools to help you out in your effort: <a href="http://developer.yahoo.com/yui/imageloader/">YUI Image Loader</a> allows you to delay images below the fold and the <a href="http://developer.yahoo.com/yui/get/">YUI Get utility</a> is an easy way to include JS and CSS on the fly. For an example in the wild take a look at <a href="http://www.yahoo.com/">Yahoo! Home Page</a> with Firebug&#8217;s Net Panel turned on.</p>
<p>It&#8217;s good when the performance goals are inline with other web development best practices. In this case, the idea of progressive enhancement tells us that JavaScript, when supported, can improve the user experience but you have to make sure the page works even without JavaScript. So after you&#8217;ve made sure the page works fine, you can enhance it with some post-loaded scripts that give you more bells and whistles such as drag and drop and animations.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Preload Components</strong></p>
<p>tag: content</p>
<p>Preload may look like the opposite of post-load, but it actually has a different goal. By preloading components you can take advantage of the time the browser is idle and request components (like images, styles and scripts) you&#8217;ll need in the future. This way when the user visits the next page, you could have most of the components already in the cache and your page will load much faster for the user.</p>
<p>There are actually several types of preloading:</p>
<ul>
<li><em>Unconditional</em> preload &#8211; as soon as onload fires, you go ahead and fetch some extra      components. Check google.com for an example of how a sprite image is      requested onload. This sprite image is not needed on the google.com      homepage, but it is needed on the consecutive search result page.</li>
<li><em>Conditional</em> preload &#8211; based on a user action you make an educated guess where the user      is headed next and preload accordingly. On <a href="http://search.yahoo.com/">search.yahoo.com</a> you can see how some extra components are requested after you start typing      in the input box.</li>
<li><em>Anticipated</em> preload &#8211; preload in advance before launching a redesign. It often happens      after a redesign that you hear: &#8220;The new site is cool, but it&#8217;s      slower than before&#8221;. Part of the problem could be that the users were      visiting your old site with a full cache, but the new one is always an      empty cache experience. You can mitigate this side effect by preloading      some components before you even launched the redesign. Your old site can      use the time the browser is idle and request images and scripts that will      be used by the new site</li>
</ul>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Reduce the Number of DOM Elements</strong></p>
<p>tag: content</p>
<p>A complex page means more bytes to download and it also means slower DOM access in JavaScript. It makes a difference if you loop through 500 or 5000 DOM elements on the page when you want to add an event handler for example.</p>
<p>A high number of DOM elements can be a symptom that there&#8217;s something that should be improved with the markup of the page without necessarily removing content. Are you using nested tables for layout purposes? Are you throwing in more &lt;div&gt;s only to fix layout issues? Maybe there&#8217;s a better and more semantically correct way to do your markup.</p>
<p>A great help with layouts are the <a href="http://developer.yahoo.com/yui/">YUI CSS utilities</a>: grids.css can help you with the overall layout, fonts.css and reset.css can help you strip away the browser&#8217;s defaults formatting. This is a chance to start fresh and think about your markup, for example use &lt;div&gt;s only when it makes sense semantically, and not because it renders a new line.</p>
<p>The number of DOM elements is easy to test, just type in Firebug&#8217;s console:<br />
document.getElementsByTagName(&#8216;*&#8217;).length</p>
<p>And how many DOM elements are too many? Check other similar pages that have good markup. For example the <a href="http://www.yahoo.com/">Yahoo! Home Page</a> is a pretty busy page and still under 700 elements (HTML tags).</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Split Components Across Domains</strong></p>
<p>tag: content</p>
<p>Splitting components allows you to maximize parallel downloads. Make sure you&#8217;re using not more than 2-4 domains because of the DNS lookup penalty. For example, you can host your HTML and dynamic content on www.example.org and split static components between static1.example.org and static2.example.org</p>
<p>For more information check &#8220;<a href="http://yuiblog.com/blog/2007/04/11/performance-research-part-4/">Maximizing Parallel Downloads in the Carpool Lane</a>&#8221; by Tenni Theurer and Patty Chi.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Minimize the Number of iframes</strong></p>
<p>tag: content</p>
<p>Iframes allow an HTML document to be inserted in the parent document. It&#8217;s important to understand how iframes work so they can be used effectively.</p>
<p>&lt;iframe&gt; pros:</p>
<ul>
<li>Helps with slow third-party content like badges and ads</li>
<li>Security sandbox</li>
<li>Download scripts in parallel</li>
</ul>
<p>&lt;iframe&gt; cons:</p>
<ul>
<li>Costly even if blank</li>
<li>Blocks page onload</li>
<li>Non-semantic</li>
</ul>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>No 404s</strong></p>
<p>tag: content</p>
<p>HTTP requests are expensive so making an HTTP request and getting a useless response (i.e. 404 Not Found) is totally unnecessary and will slow down the user experience without any benefit.</p>
<p>Some sites have helpful 404s &#8220;Did you mean X?&#8221;, which is great for the user experience but also wastes server resources (like database, etc). Particularly bad is when the link to an external JavaScript is wrong and the result is a 404. First, this download will block parallel downloads. Next the browser may try to parse the 404 response body as if it were JavaScript code, trying to find something usable in it.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Reduce Cookie Size</strong></p>
<p>tag: cookie</p>
<p>HTTP cookies are used for a variety of reasons such as authentication and personalization. Information about cookies is exchanged in the HTTP headers between web servers and browsers. It&#8217;s important to keep the size of cookies as low as possible to minimize the impact on the user&#8217;s response time.</p>
<p>For more information check <a href="http://yuiblog.com/blog/2007/03/01/performance-research-part-3/">&#8220;When the Cookie Crumbles&#8221;</a> by Tenni Theurer and Patty Chi. The take-home of this research:</p>
<ul>
<li>Eliminate unnecessary cookies</li>
<li>Keep cookie sizes as low as possible to minimize the      impact on the user response time</li>
<li>Be mindful of setting cookies at the appropriate domain      level so other sub-domains are not affected</li>
<li>Set an Expires date appropriately. An earlier Expires      date or none removes the cookie sooner, improving the user response time</li>
</ul>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Use Cookie-free Domains for Components</strong></p>
<p>tag: cookie</p>
<p>When the browser makes a request for a static image and sends cookies together with the request, the server doesn&#8217;t have any use for those cookies. So they only create network traffic for no good reason. You should make sure static components are requested with cookie-free requests. Create a subdomain and host all your static components there.</p>
<p>If your domain is www.example.org, you can host your static components on static.example.org. However, if you&#8217;ve already set cookies on the top-level domain example.org as opposed to www.example.org, then all the requests to static.example.org will include those cookies. In this case, you can buy a whole new domain, host your static components there, and keep this domain cookie-free. Yahoo! uses yimg.com, YouTube uses ytimg.com, Amazon uses images-amazon.com and so on.</p>
<p>Another benefit of hosting static components on a cookie-free domain is that some proxies might refuse to cache the components that are requested with cookies. On a related note, if you wonder if you should use example.org or www.example.org for your home page, consider the cookie impact. Omitting www leaves you no choice but to write cookies to *.example.org, so for performance reasons it&#8217;s best to use the www subdomain and write the cookies to that subdomain.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Minimize DOM Access</strong></p>
<p>tag: javascript</p>
<p>Accessing DOM elements with JavaScript is slow so in order to have a more responsive page, you should:</p>
<ul>
<li>Cache references to accessed elements</li>
<li>Update nodes &#8220;offline&#8221; and then add them to      the tree</li>
<li>Avoid fixing layout with JavaScript</li>
</ul>
<p>For more information check the YUI theatre&#8217;s <a href="http://yuiblog.com/blog/2007/12/20/video-lecomte/">&#8220;High Performance Ajax Applications&#8221;</a> by Julien Lecomte.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Develop Smart Event Handlers</strong></p>
<p>tag: javascript</p>
<p>Sometimes pages feel less responsive because of too many event handlers attached to different elements of the DOM tree which are then executed too often. That&#8217;s why using <em>event delegation</em> is a good approach. If you have 10 buttons inside a div, attach only one event handler to the div wrapper, instead of one handler for each button. Events bubble up so you&#8217;ll be able to catch the event and figure out which button it originated from.</p>
<p>You also don&#8217;t need to wait for the onload event in order to start doing something with the DOM tree. Often all you need is the element you want to access to be available in the tree. You don&#8217;t have to wait for all images to be downloaded. DOMContentLoaded is the event you might consider using instead of onload, but until it&#8217;s available in all browsers, you can use the <a href="http://developer.yahoo.com/yui/event/">YUI Event</a> utility, which has an <a href="http://developer.yahoo.com/yui/event/#onavailable">onAvailable</a> method.</p>
<p>For more information check the YUI theatre&#8217;s <a href="http://yuiblog.com/blog/2007/12/20/video-lecomte/">&#8220;High Performance Ajax Applications&#8221;</a> by Julien Lecomte.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Choose &lt;link&gt; over @import</strong></p>
<p>tag: css</p>
<p>One of the previous best practices states that CSS should be at the top in order to allow for progressive rendering.</p>
<p>In IE @import behaves the same as using &lt;link&gt; at the bottom of the page, so it&#8217;s best not to use it.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Avoid Filters</strong></p>
<p>tag: css</p>
<p>The IE-proprietary AlphaImageLoader filter aims to fix a problem with semi-transparent true color PNGs in IE versions &lt; 7. The problem with this filter is that it blocks rendering and freezes the browser while the image is being downloaded. It also increases memory consumption and is applied per element, not per image, so the problem is multiplied.</p>
<p>The best approach is to avoid AlphaImageLoader completely and use gracefully degrading PNG8 instead, which are fine in IE. If you absolutely need AlphaImageLoader, use the underscore hack _filter as to not penalize your IE7+ users.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Optimize Images</strong></p>
<p>tag: images</p>
<p>After a designer is done with creating the images for your web page, there are still some things you can try before you FTP those images to your web server.</p>
<ul>
<li>You can check the GIFs and see if they are using a      palette size corresponding to the number of colors in the image. Using <a href="http://www.imagemagick.org/">imagemagick</a> it&#8217;s easy to check using<br />
identify -verbose      image.gif<br />
When you see an image useing 4 colors and a 256 color &#8220;slots&#8221; in      the palette, there is room for improvement.</li>
<li>Try converting GIFs to PNGs and see if there is a      saving. More often than not, there is. Developers often hesitate to use      PNGs due to the limited support in browsers, but this is now a thing of      the past. The only real problem is alpha-transparency in true color PNGs,      but then again, GIFs are not true color and don&#8217;t support variable      transparency either. So anything a GIF can do, a palette PNG (PNG8) can do      too (except for animations). This simple imagemagick command results in      totally safe-to-use PNGs:<br />
convert image.gif      image.png<br />
&#8220;All we are saying is: Give PiNG a Chance!&#8221;</li>
<li>Run <a href="http://pmt.sourceforge.net/pngcrush/">pngcrush</a> (or any other PNG optimizer tool) on      all your PNGs. Example:<br />
pngcrush      image.png -rem alla -reduce -brute result.png</li>
<li>Run jpegtran on all your JPEGs. This tool does lossless      JPEG operations such as rotation and can also be used to optimize and      remove comments and other useless information (such as EXIF information)      from your images.<br />
jpegtran -copy      none -optimize -perfect src.jpg dest.jpg</li>
</ul>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Optimize CSS Sprites</strong></p>
<p>tag: images</p>
<ul>
<li>Arranging the images in the sprite horizontally as      opposed to vertically usually results in a smaller file size.</li>
<li>Combining similar colors in a sprite helps you keep the      color count low, ideally under 256 colors so to fit in a PNG8.</li>
<li>&#8220;Be mobile-friendly&#8221; and don&#8217;t leave big gaps      between the images in a sprite. This doesn&#8217;t affect the file size as much      but requires less memory for the user agent to decompress the image into a      pixel map. 100&#215;100 image is 10 thousand pixels, where 1000&#215;1000 is 1      million pixels</li>
</ul>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Don&#8217;t Scale Images in HTML</strong></p>
<p>tag: images</p>
<p>Don&#8217;t use a bigger image than you need just because you can set the width and height in HTML. If you need<br />
&lt;img width=&#8221;100&#8243; height=&#8221;100&#8243; src=&#8221;mycat.jpg&#8221; alt=&#8221;My Cat&#8221; /&gt;<br />
then your image (mycat.jpg) should be 100x100px rather than a scaled down 500x500px image.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Make favicon.ico Small and Cacheable</strong></p>
<p>tag: images</p>
<p>The favicon.ico is an image that stays in the root of your server. It&#8217;s a necessary evil because even if you don&#8217;t care about it the browser will still request it, so it&#8217;s better not to respond with a 404 Not Found. Also since it&#8217;s on the same server, cookies are sent every time it&#8217;s requested. This image also interferes with the download sequence, for example in IE when you request extra components in the onload, the favicon will be downloaded before these extra components.</p>
<p>So to mitigate the drawbacks of having a favicon.ico make sure:</p>
<ul>
<li>It&#8217;s small, preferably under 1K.</li>
<li>Set Expires header with what you feel comfortable      (since you cannot rename it if you decide to change it). You can probably      safely set the Expires header a few months in the future. You can check      the last modified date of your current favicon.ico to make an informed      decision.</li>
</ul>
<p><a href="http://www.imagemagick.org/">Imagemagick</a> can help you create small favicons</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Keep Components under 25K</strong></p>
<p>tag: mobile</p>
<p>This restriction is related to the fact that iPhone won&#8217;t cache components bigger than 25K. Note that this is the <em>uncompressed</em> size. This is where minification is important because gzip alone may not be sufficient.</p>
<p>For more information check &#8220;<a href="http://yuiblog.com/blog/2008/02/06/iphone-cacheability/">Performance Research, Part 5: iPhone Cacheability &#8211; Making it Stick</a>&#8221; by Wayne Shea and Tenni Theurer.</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#page-nav"> </a></p>
<p><strong>Pack Components into a Multipart Document</strong></p>
<p>tag: mobile</p>
<p>Packing components into a multipart document is like an email with attachments, it helps you fetch several components with one HTTP request (remember: HTTP requests are expensive). When you use this technique, first check if the user agent supports it (iPhone does not).</p>
<br />Posted in SEO  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kapiluttam.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kapiluttam.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kapiluttam.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kapiluttam.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kapiluttam.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kapiluttam.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kapiluttam.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kapiluttam.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kapiluttam.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kapiluttam.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kapiluttam.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kapiluttam.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kapiluttam.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kapiluttam.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kapiluttam.wordpress.com&amp;blog=5097565&amp;post=10&amp;subd=kapiluttam&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kapiluttam.wordpress.com/2009/09/30/best-practices-for-speeding-up-your-web-site/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1723dfd7fa5f746d8184c38cbe87c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kapiluttam</media:title>
		</media:content>
	</item>
	</channel>
</rss>
