Faking it: WordPress as CMS pt. 2

Tagged and

Now we comes the part where we throw in some cache-action.  Brought to you by the Dynamic Duo Mattman and Zeller the Boy Wonder.  Now Staticize Reloaded is not the best thing since sliced bread, but it is pretty great regardless.

Now I am not going to get into the "how" the plugin works, I mean who wants that!  We are Americans, we just want it to work now!  So anywhoo, follow these easy steps to set up a little cache action:

  • I assume you have followed the above link and downloaded the plugin from Matt's site?  Well if not then go and download away, I will wait.  Done?  Good.
  • Now, you want to drop that badboy into your /plugins/ directory located within the /wp-content/ directory.
  • While you are in the /wp-content/ dir, go ahead and create another dir called cache within /wp-content/ and make sure to chmod, or set permissions to 777.
  • Now login to your admin area and go to plugins, you will now see Staticize Reloaded listed, go ahead and activate it.

That is it, the plugin performs all its tasks behind the scenes.  One caveat, you must deselect gzip compression from the "reading" screen of your options, this is being worked on and should no longer be a factor in the near future.  If you leave it selected it will bork the whole process.

Okay so now we have our pseudo-static sections caching (as well as our non-pseudo-static sections), so what is the next weapon to add to our arsenal?  Read on and find out.

The next part of this tutorial requires you to be able to make changes to your apache setup, either through editing of httpd.conf or through .htaccess.  Sooo... if you can't do one of these two things, please skip on to page 3.  Those of you still with me, lets get to the hackin!  What we are trying to accomplish here is to add some flare to our newly created and cached sections.  Most sites that have aboutme and colophon sections use a site uri something like this: mysite/colophon/, now our solution poses a problem since they are not files in sub-domains, they are php files residing in our $siteroot, or wp directory.  There are two ways to approach this:

  1. Create folders for each section, and move the files we created earlier into them, making sure to either a.) make symlinks from $siteroot to the corresponding files in thier sub-directories, or b.) edit each of our pages to point to one directory up, e.g. ../wp-blog-header.php instead of wp-blog-header.php.
  2. Or we could perfom some apache magic and eliminate the need for file extensions.  What this gives you is the ability to input say mysite.com/index and have it resolve to index.php.  This also means that if you type in mysite.com/colophon/ it will resolve, no questions asked to mysite.com/colophon.php without updating the URI field.  I think you can see where I am going with this, and the possibilities that this presents.

Also, you can congratulate yourself for being forward thinking.  Eventually everyone will wake up and realize that running your server this way is better for the user.  With this method I could easily move from using php to power my site to cgi or asp (not that I would want to) and my users would never know, and more importantly thier bookmarks and permalinks would not break since they were pointing to chrisjdavis.org/index.

So, what we need to do is fire up the old terminal and edit either httpd.conf or .htaccess.  I will let you find out where these files are located since each distro handles placement differently.  For this haxie we simply need to add this snippet of code:
Options + MultiViews
to your httpd.conf file or your .htaccess and then once saved, restart apache.  I prefer the lovely:
apachectl graceful
command to restart apache, since it politely kills the child processes instead of just hacking them off wholesale. ; Now there could be a performance impact by doing the above, but unless you are running with a couple million hits a day, it is minimal.

Okay now we have our site running without file extensions, and caching.  So what is left?  Good question, to close I wanted to suggest some cosmetic changes.  On our pages like aboutme and colophon, we really don't want to have people leave comments, and we don't really need to display the time, day, category and author for each of these "entries" so we should get rid of those function calls.  Keep in mind that what we might want is a last updated on bit of code, that would find the date and time for the newest entry on that cat and echo it out.

That can be accomplished by using a bit of custom code, or by exploiting some of the functions already built into WordPress.  That my friends is your homework.  Well that is it for now, let me know if there is anything else you would like to hear on this topic, or if anything I have stated is not as clear as it could be.