Harvard Law serves some pretty high usage blogs, WP Super Cache and W3 Total Cache weren’t sufficient for their needs, and so Dan wrote a plugin to serve cached files with Nginx. The cool thing is that it (seems to) serve these cached pages without touching WordPress at all. I’m going to play with this on the next slice we set up it; if it works as advertised, then this is the caching solution we need for the rare possibility that one of the sites gets hammered with traffic.
Tag Archive for 'WordPress'
A few of the links I referred to when optimizing MySQL settings on one of the VPS’:
- Behold WordPress, Destroyer of CPUs – Jeff Atwood rants about WordPress’ resource use; Matt Mullenweg responds with a list of suggested MySQL settings.
- WordPress Optimization Bible – Another set of MySQL settings to refer to. It also suggests enabling eAccelerator, which apparently works nicely with W3 Total Cache.
- One MySQL Configuration Tip That Can Dramatically Improve MySQL Performance – Suggests adding max_write_lock_count = 1
I started a new thread in the WordPress forums this morning because we seem to have a unique issue on our hands. Basically, WordPress’ Flash Media Uploader is working for every file type except for MP3. One suggestion I came across was that it might be a mod_security issue; I tried the recommended .htaccess addition, however, to little luck. It seems odd that the only file type that doesn’t work is MP3.
One of the sites we have on Slicehost has MySQL regularly using 50% to 150% of CPU, even though we have page and query caching using memcached. As such, I did a bit of research this morning in regards to optimization steps we can take. Keep in mind that this post was written at various times over several hours.
The first post I read, a rant by Jeff Atwood, lead to suggested MySQL setting configurations from Matt Mullenweg. Based on the conversation there, I looked over a few posts related to MySQL optimization including a conversation on Stack Overflow, explanation on a lightweight configuration on Debian, and a lengthy WordPress optimization tutorial. I also came across a forum thread on WordPress.org that indicates high CPU usage may actually have to do with pretty permalinks.
The steps I took today were to implement a few of Matt’s suggested memory settings. I also ran a Perl MySQL tuner script that suggested I disable InnoDB, which I did. The most proactive steps we can take, I think, are to better configure MySQL to cache queries, and reduce the number of queries made by the theme. The changes I made today, though, anecdotally have dropped the CPU usage by a third to a half.
One of the time-consuming parts of an archive transfer currently occurs when we migrate a database with a large number of authors and attempt to add each author as a user. Personally, this is my preference because it means we keep the integrity of the data as true as possible (the other option is to assign the post to the default user and then store the author data as a custom field). The import slows down, however, as the number of users in the database increases largely, I think, because WordPress isn’t optimized to handle a large number of users, let alone content from a large number of users.
As such, I think it might be worthwhile to make it standard operating procedure to import authors as custom fields and then have a secondary script that checks the custom field for author information and then creates the user if the author doesn’t exist or assigns the post to the author if the user does exist.
Related to the time required to migrate archives, I wonder if we should go back to importing the content directly into the database and bypassing the creation of WordPress eXtended RSS files. If we did this, we could likely automate more of the process. Thoughts?
You can now use all of the libraries developed as a part of the WordPress software in your own free or commercial software. I don’t know how long this has been out but it’s pretty darn significant. Matt first mentioned it at WordCamp 2008 in San Francisco (that same month of August that CoPress started) and they’ve been using it as a foundation for projects like bbPress and SupportPress. I believe SupportPress is their in-house ticketing system that they’re using for VIP clients.
Tonight I researched information on creating Wordpress theme frameworks. The Wordpress Codex actually has some really great information with links to example frameworks as well as some handy tutorials for creating a framework. There’s also this post which is a summary of 20 different frameworks; it provides a good overview of some of the options out there.
Justin Tadlock has written an interesting post about why he created a Wordpress framework. The post covers some of the basics about what some fundamental aspects to a framework should be as well as what the benefits are. It’s definitely worth a read and makes it seem as though we are definitely headed down the right track here.
The frameworks
In terms of code to look at for ideas, one of the more well known frameworks is Thematic. This is a framework created by Ian Stewart that has actually been developed into a business model as well.
Elliot Jay Stocks has also written a framework of his own called Starkers. It takes the premise that a framework ought to provide nothing more than a code base, not even any visual styles. Interesting concept and Stocks is a stellar designer so it might be a good basis for inspiration and ideas.
Carrington is also another framework. This one is interesting because they have also built in a mobile interface for the sites. This could provide an interesting basis for developing mobile versions of client sites we create.
Tutorials and Miscellaneous
There’s also this tutorial which is part of a series that covers how to create and structure your own framework. Some good background information.
Secondly, I researched some information on creating a Wordpress child theme. Since this is how we’ll be handling client-specfic themes we will want a solid understanding of how to accomplish this. First, there is this tutorial which takes the Basic2Col framework as a starting point and walks you through how to build a child theme off of it.
Finally, this post looks at why child themes are the future of Wordpress. It also includes a solid list of example frameworks and articles about frameworks and what they can do for development.
That’s a quick highlight of some of the most popular frameworks and posts to give a quick introduction to creating our own.
We now have at least one school transitioning to new web staff and it’s something that we’re going to run into frequently in the future. As part of our efforts to keep knowledge from vanishing into the ether we’ll need a process of getting the new staff up to speed.
While simply having the incoming staff members fill out a survey is certainly the easy way to get a sense of their abilities I have a couple ideas as to how to make it a more engaging and active process.
- Have the outgoing staff member write a blog post about their experience – This would cover what they learned, what they wished they had known going in, and perhaps get into the technical side of things as well. It’d provide a resource for not only that school’s incoming web staff but would be a model for others as well.
- Talk with new web staff – This would not even have to be an orientation to Wordpress. I’m thinking it could almost be a good idea to treat it like an interview that they would go through as part of working for the news organization. We’d just talk over what they know, their past experience and projects and then discuss what they hope to learn in the next semester/year.
Those are just two ideas that I have right now. Basically I’m looking to find a way to transition new staff so that the information remains somewhere that is public and searchable (i.e. more than just a survey submitted to us). Thoughts?
One of the ideas we have for the fall, because clients are afforded an hour or two of education every month, is to offer workshops so that they can improve their WordPress, PHP, etc. skills. What I’d like to do at this point is start brainstorming what those topics might be so that we can start planning ahead. Here’s what I have so far:
- Basic HTML/CSS, basic WordPress, etc.
- Advanced HTML/CSS in regards to how it applies to theming WordPress
- Introduction to PHP and WordPress
- How to measure engagement with your website (using Google Analytics, # of comments, and other metrics)
- Creating and installing plugins
- Site performance (how to test how quickly your site loads, and methods for improving that)
What else should we add to the list?
Related: A past idea on how to tie client education into the Connection Engine.
Recent Comments