Dynamically resizing WordPress images on nginx with ngx_http_image_filter_module

Ever notice that image galleries on WordPress.com load faster than those on your own? WordPress.com can serve dynamically-resized images on-the-fly to improve page load speeds and create pretty-looking image galleries. You can achieve this on your own server too, with a few simple tricks in your nginx.conf, taking advantage of URL parameters WordPress appends to image uploads and the nginx libgd-based ngx_http_image_filter_module.

WordPress’ dynamic image sizes serve two main purposes: aside from resizing the source images to a smaller size, it also lets you crop rectangular images to a thumbnail without completely skewing the aspect ratio and butchering the result.

Continue reading

File-Based Extension to the WordPress Object Cache

WordPress 2.5 has just been released, and has users are quickly finding out, file-based object caching has been removed from this release.

We’ve just released another extension to the WordPress object cache mechanism, supplementing our existing plugins for adding eAccelerator and XCache support to WordPress’s object caching features.

NeoSmart Technologies’ File-Based object caching extension for WordPress re-implements the cache-to-disk object caching feature of WordPress 2.0 through to 2.2. NeoSmart Technologies is also committed to the maintenance and support of the file-based caching mechanism.

Please be careful with the use of this plugin. It’s been disabled in the default WordPress codebase since WordPress 2.1 as a result of certain shared webhosts complaining of increased disk I/O access and thrashing when WordPress is subjected to extreme load times (as in the event of a Digg or Slashdot attack); so make sure your disk is fast enough to make it worth using this extension.

Continue reading

WordPress, PerformancePress, and GSoC 2008

For those of you that haven’t yet heard, WordPress is once-more taking part in the Google Summer of Code. Google Summer of Code 2008 is a Google-sponsored program where college students are encouraged to contribute to their favorite open-source projects for a summer, and in exchange both they and their mentors receive some monetary compensation/motivation for their efforts.

I really don’t need to go into details about this much, since Lloyd Budd has done such a good job explaining what it is and what WordPress hopes to achieve in this program. This year, WordPress has an even-larger and more-exciting list of possible projects than before, along with a list of the mentors available for each idea. This Google Summer of Code, I’ll be mentoring for the WordPress projects in the one area that is closest to my heart: improving performance.

It would be unfair to say that WordPress is slow or an inadequately-performing blogging engine, because that’s not really true. "Performance," more than any other software characteristic or trait, is a very relative and subjective index. It depends on thousands of different factors, it has dozens of different baselines, and most confusingly of all, sometimes the perception of performance matters more than the performance itself.

Continue reading

WordPress 2.5 and the Object Cache…

Caching and Why We Need It

Ever since the creation of interpreted languages and the birth of dynamic web content, developers have been on the lookout for tools, workarounds, and extensions in search of a solution for a solution to bring maximum performance to the world of dynamically-generated web pages.

Perhaps the simplest, most straight-forward, and most effective of these solutions is the caching technique. In most caching implementations, the dynamic content generated by user requests to a particular URI on a server trigger the caching mechanism which then stores the generated content in a "storage facility" somewhere. Future requests to the same URI retrieve the stored content rather than spend time and effort re-creating the response.

The most-popular method of caching involves the archiving of the complete HTML response generated by the webserver and then stored as a static content on the hard drive for retrieval at a later date (usually with some mechanism responsible for expiring the content upon certain actions or after a set amount of time).

Continue reading

Getting WordPress Super Cache to Run on a Windows (IIS or Apache) Server

If you’re a regular reader, you probably know by now that we just love performance and can’t get enough of server performance-improving software/code… Especially when it comes to WordPress.

Donncha has recently released a great plugin for WordPress, called "WordPress Super Cache." It builds on the original WP-Cache plugin by Ricardo Granada – except that it fixes all the bugs in the original implementation and has been written in enough pure PHP that it’ll also run on Windows servers – both IIS and Apache for that matter! <cue applause>

At the moment (as of version 0.3.1) it needs a bit of work to make it run, but not much. So here goes – 10 easy steps to get cached content on your IIS or Apache server under Windows:

Continue reading

XCache and eAccelerator WP Plugins Updated

We’ve just finished uploading the latest versions of our XCache and eAccelerator plugins, now at version 0.6.

For those of you that missed the initial announcement, we’ve written two plugins that let WordPress communicate directly with memory-resident opcode PHP variable caches that are used in XCache and eAccelerator to boost performance and decrease I/O activity.

eAccelerator and XCache are the two most-popular open-source opcode caching engines for PHP, and we highly recommend that any and all hosts use them to improve PHP performance by several folds. In particular, we recommend XCache for best performance.
Continue reading

XCache and eAccelerator Plugins for WordPress

In this episode of “The Never-Ending Quest for Better Server Performance,” we follow our heroes’ journey through the dangerous and murky woods of PHP opcode caching engines, where they aren’t content with just installing an opcode caching engine, but <gasp> becoming one with it too!

Yep, you heard that right. We’ve just released two new plugins for the WordPress users out there, that take opcode caching to the next level. If you haven’t already installed an opcode caching engine like XCache (our favorite!), eAccelerator, Turck MMcache, Memcached, APC, or PHPA then you really need to do that right now before even continuing this article. Really, what were you waiting for!?

Continue reading

CompleteRSS 1.1 Released

If you’ve been wondering why the lack of activity, well, now you know. CompleteRSS 1.1 has just been released; and we’re almost done with EasyBCD 1.61 (actually, we’re done) and we have another program we’ll be releasing in one form or the other sometime soon (as in 24-hours-soon).

CompleteRSS 1.1 fixes an elusive bug that rendered the_excerpt() useless, and a host of other compatibility issues with other plugins that incorrectly access the RSS action hook in WordPress.

Download CompleteRSS 1.1

WordPress 2.2 Adds Tagging Support!

It seems like the latest SVN commits to WordPress have added tagging support to the popular open-source blogging platform… and it’s about time, too! It’s no longer stuff you have to add by plugin, so WordPress is finally getting with the times and adding this much-requested functionality to the upcoming WordPress 2.2 (due to be released April 22, 2007). See for yourself:

Continue reading

What on Earth is Wrong with Akismet!?!?

Akismet sucks. No really – if it can’t tell that 400 duplicate comments made to the same blog but different pages by the same IP address linking to the same domain in a matter of 4 minutes are to be considered spam, no thanks – we’ll find something better.

Seriously though! This has happened 3 times in 24 hours. 100 or so comments each time. Each “wave” comes from the same IP, links to the same site, contains the same exact (non) words, and is just as ridiculously obvious as being spam…. They don’t even get flagged as “moderated,” they go straight to the inbox (so to speak..)!

Continue reading