Re: Over Usage of resources
Cache just changes the kind of resources you use -- it trades disk access and database hits for RAM space, making your site more responsive (that is, you can handle more users because RAM is many times faster than disk or DB accesss). Unfortunately, RAM space and CPU time are the real limiting factors here and on most low-cost shared servers.
Let's say you're running on a physical box that has 64GB of RAM and 1000 user accounts (as an example) -- that leaves you with a "fair share" steady-state memory allotment of around 65MB. (Well, except that the server itself needs a chunk of memory for its own processes and daemons and and so forth, but let's keep it simple.) But you aren't running in a "steady state" -- everybody on the server, including you, has "burst" requirements, times when you need to use a lot of capacity for a short period of time (usually for less than a couple of seconds, but sometimes longer). A cache program says "I'll probably need to do that again soon" and holds the memory you've grabbed for a while before letting go.
This can actually be worse on a site with low activity since the cache needs to be rebuilt on almost every visit. Rebuilding the cache takes extra CPU time as well as memory space -- and you still need to make all of the database and disk requests that you would have had to make anyway.
Memcache is a great idea if you have a static memory allotment (dedicated server, VPS, "cloud instance" or a hard allotment on a shared server) and enough hits to justify the cache. It can work in a shared server environment if there are relatively few user accounts per server (definitely not the case here with free hosting accounts) and you can grab and hold a chunk of memory -- and you have enough hits to justify the cache. Heck, if you have a very dynamic site and a lot of users, you can use write-behind to update your actual database only during the slow moments. But if your site is relatively infrequently updated (less than several times a minute) and you don't have a static memory allotment, then there are other caching strategies that work a lot better (like rewriting your menus on update and storing them to create a single database hit on each user visit instead of computing them at service time, etc.).
“Beware of bugs in the above code; I have only proved it correct, not tried it.” --Donald Knuth
"It was as if its architects were given a perfectly good hammer and gleefully replied, 'neat! With this hammer, we can build a tool that can pound in nails.'" -- Alex Papadimoulis (on TheDailyWTF.com)