Dillsmack went to Italy for a bit so I am playing with code on my own. (expect downtime). Anyway I been playing with magpierss, wp-cache, and memcached and woah.

The Wu-Tang clan knew what they were talking about with C.R.E.A.M

  • wp-cache is the plugin for wordpress which uses file level caching. This works really good for most things but its kind of touch and go. I really am kind of puzzled why wordpress does not include this incorporate this in wordpress. It takes a HUGE load off of your database server and will keep you up if you get slash doted or dugg.
  • memcached – caching at ram level wooooot. This is pretty badass and I am having a lot of fun with it. My friend Shawn Hogan tried to turn me onto it a while ago but I just could not wrap my head around it. While I use wp-cache for most of this blog the custom plugins i wrote I use a 512mb memcache to store the results for 60 seconds. The code I wrote for them is really bad but the cool thing about memcache is it makes up for your bad code. I just cache the output of the functions and whola lightning fast..as ram!
  • Magpie RSS. Magpie rss is what I used to build my spider-bot that crawls my friends RSS feeds and all the forums to produce the marketplace feed. I memcache the results on the marketplace ever 30 seconds incase it gets hammered (and it has been getting hammered pretty good). Anyway magpie has built in caching so I dont hammer my friends rss feeds to bad.
  • EDIT:

    Here is an example of my code for the top commentors on the side bar that I wrote and the memcache that caches in information:

    [php]

    function posse()
    {
    #start cache
    $cache_key = “posse”;
    $memcache = new Memcache;
    $memcache->addServer(‘127.0.0.1’, 11211,0,1,1,1);
    $output = $memcache->get($cache_key);
    if (!$output) {
    ob_start();
    #end Start Cache

    global $wpdb, $tablecomments;

    print “

    “;

    $commenters = $wpdb->get_results(“SELECT COUNT(comment_author) AS commentcount, comment_author, comment_author_url FROM $tablecomments
    WHERE unix_timestamp(comment_date)>unix_timestamp(NOW())-(60*60*24*7)
    AND comment_author_url !=”
    AND comment_author !=’ShoeMoney’
    AND comment_author != ‘ddn’
    AND comment_approved = ‘1’
    AND comment_type =”
    GROUP BY comment_author
    ORDER BY commentcount DESC
    LIMIT 20;”);

    foreach($commenters as $commenter)
    {

    print ”

    “;

    }

    print “

    “;

    #End of Cache Code
    $output = ob_get_contents();
    $memcache->set($cache_key, $output, false, 60); // 60 second cache
    ob_end_flush();
    } else {
    echo $output;
    return;
    }
    #End of Cache Code

    }
    [/php]

    So for those who understand php you can see this would be a pretty huge load for the 65,000+** hits this recieves a day… but by caching this for 60 seconds you drastically lower that 😉

    Cacheing rocks!

    **hits refers to total pageloads not unique visitors. This site only gets between 10,000 and 15,000 unqiues per day

    By Jeremy Schoemaker

    Jeremy "ShoeMoney" Schoemaker is the founder & CEO of ShoeMoney Media Group, and to date has sold 6 companies and done over 10 million in affiliate revenue. In 2013 Jeremy released his #1 International Best selling Autobiography titled "Nothing's Changed But My Change" - The ShoeMoney Story. You can read more about Jeremy on his wikipedia page here.

    61 thoughts on “Cache Rules Everything Around Me”
    1. Looks great. I think I’ll take a look at Wp-Cache for my own blog. Thanks for the recommends. 🙂

    2. Since im using the wp-cache, I just can’t live without it! It makes my page faster and with the load of traffics from stumbleUpon, my blog is still on! 😀

    3. Does wp-cache require anything extra server side? I see a lot of posts on google saying they have problems installing it. I have not personally tried it myself yet, but I will bookmark this page for when I start a blog.

    4. I also use wp-cache, and while it has issues with certain plugins with dynamic content (such as wp-postratings), it is indeed very handy to keep installed in the event of a slashdotting or getting linked from boing boing. I agree that wordpress needs to just integrate this into the main system.

    5. I use WP-Cache and didn’t even realize that there were other options. Though this plug in works very well for me, it’s nice to know that it isn’t the only plug in available.

    6. I stop reading at “Dillsmack went to Italy for a bit”… I’m still waiting my travel permit and I already bought $2000 in tickets to go visit my family in Italy with my wife and probably I won’t be able to go 🙁 *sigh*

    7. So basically you’re saying.. start using wp-cache and your site will live through moderate digging??? Any wordpress site on it’s own box basically?? I think I’ll have to start learning as well :S

    8. shoe is twittering??? I’m wondering why? Do you have a custom app in the works since they opened up their platform to developers?

    9. Yea. This is the install steps:

      1. Upload the folder.
      2. Click activate.
      3. Done. 😛 (Unless you have some permissions you need to set)

    10. I installed wp-cache but it made all of my dynamic sidebar items static. Any idea what I did wrong? I’m decently tech-savvy but I admittedly didn’t look into it very far before de-activating it.

    11. Ive been meaning to look into memcached since you talked about it last time. I guess I will give it a go

    12. That’s pretty badass. How did you get into PHP and learn it?

      I’d love to but I (kind of like you) resort to a friend for PHP help. Anyone else with ideas on how they learned?

    13. Side note: Can you please make your logo clickable to the index page again? This is a standard usability thing

    14. Shoe, is there a reason why you are using double quote marks instead of single marks in that code? I always thought single quote marks were faster.

    15. I got in the habit of using double quotes just so I can use non literal strings. I honestly have no clue if single quotes are faster then double quotes.

    16. I agree with Travel Notebook. The “home” button is a few inches away, but it has just become second nature for me to click on the logo to go back to the homepage. =D

    17. the logo is a background image, but there’s a huge gap to the left of the banner where he could put a big box with a javascript link.

      and this is the best blog post title of 2007. contest over.

    18. I had some issues with wp-cache, and I kind of am concerned about using it again because my site is updated so much I dont want my users to miss updates just because of the cache. Not sure what I can do about that..

    19. Thanks for this Shoe. You’ve inspired me to give WP-Cache and magpie a shot.

      Like everyone else I can’t figure out why this isn’t included in WordPress already.

    20. IMO, cache-ing is not justified for a website with less than 30k uniques. It does free some resources, but with nowadays servers, it takes a lot of traffic to to intimidate them. Smarty introduced such a cache-ing tool a long time ago, but I fail to see the the point of it, unless the server really can’t handle the requests. Just my opinion, I may be wrong

    21. You are totally wrong. uniques is no measure.

      Ever been dugg? I guess not. Get 150+ hits a second and let me know how that goes.

    22. Wp-Cache is really great wordpress plugin , as u said for big sites this plugin is really mandetary.I hope wordpress fucture versions will have Wp-Cache as default plugin.

    23. Thanks for the code, I’ve never used memcache before (my traffice levels aren’t as high as yours so never been spurred to go past wp-cache) so thanks.

    24. wp-cache: You have the influence to get WP to add this feature. I might get a form letter response, but you could probably get them on the phone.

    25. Same here, I’ll be giving memcache a go this weekend, looking forward to tracking performance results

    26. better to be over prepared and cautious than caught with your pants down and loose traffic possibilities.

    27. Wp-Cache must be a default plugin for wordpress actually.

      BTW Excellent idea you gave . I would like to try on my blog too 🙂

    28. Good idea 🙂 I’m using BlogEngine.net which is ASP.NET, which it has built in support for “output caching” that basically does the same thing. You can specify a timeout, and a querystring parameter used to decide whether the cache is unique (eg. if you have ?postId=x you want the cache to very with x).

    29. I was going to mention you might get stale comments, but I see the cache is cleared every 60 seconds, not every 60 minutes. I guess that’s a good compromise 😀

    30. […] dank Shoemoney muss ich gerade Plugin-Entwicklern die Lektüre der Memcache-Funktionen ans Herz legen. Damit […]

    31. […] I came across a post from Shoemoney awhile ago in which I learned about improving WordPress performance with the wp-cache plugin. […]

    Comments are closed.