20 Jan 2010 @ 4:37 PM 

CakePHP offers a lot of functionality to us as developers. The ability to develop websites rapidly provides a trade-off in how quickly the website will load. As we expand our skills, we will learn the techniques that will slow down/speed up performance.

Objectives

  • Apply techniques to speed up CakePHP’s load time
  • Optimize our queries
  • Cache query results

More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 04 Feb 2010 @ 05:10 PM

EmailPermalinkComments (1)
Tags
 25 Apr 2009 @ 7:32 AM 

If you haven’t noticed already, at times CakePHP can be a little slow loading!  The reason for this is quite simple.  Rapid Application Development.  To allow for RAD, sometimes we must give up something, in this scenario it’s a bit of speed when loading.  Don’t worry, CakePHP offers some excellent utilities to help with this.

The one I will focus on today is caching our CakePHP query results.  The key to this is, we are caching the results, not the queries themselves.  If you know databases well, you may be thinking, “why do I want to cache queries, doesn’t my database server do this already?”  The answer to the question is, yes it does.  However, CakePHP still needs to call the database query and parse your results.  What I’m proposing, will avoid both of those steps and allow you to just retrieve the results.

This process not only avoids excess load on the database, it also reduces PHP’s processing time that CakePHP has to do to provide you with such useful arrays. More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 24 Apr 2009 @ 08:35 PM

EmailPermalinkComments (7)
Tags
Tags: ,
Categories: CakePHP, Optimization
 21 Mar 2009 @ 11:28 AM 

One of my first articles discussed YSlow.  An excellent Mozilla add-on to help you understand why your web page may be loading slowly.

In that article, I describe the importance of gzip, minify, and grouping your Javascript and CSS code into one file each.

Just recently I was surfing CakePHP’s bakery and found a nice add-on to simplify the process and make it super easy. More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 21 Mar 2009 @ 05:40 AM

EmailPermalinkComments (0)
Tags
 15 Mar 2009 @ 2:26 PM 

On some of our more recent projects, we have been using the Containable behavior that CakePHP provides.  It works quite nicely, a lot easier than the previous format of having to bind and unbind models on the fly.

The pitfalls began to appear when some of our clients were reporting that some pages are extremely slow.  After a bit of research, it was quite apparent that the root of the cause was attributed to us using the containable feature. More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 15 Mar 2009 @ 02:26 PM

EmailPermalinkComments (13)
Tags
 27 Feb 2009 @ 9:20 PM 

If you are not familiar with database indexes or even if you are, but not sure when to use them, this article will be perfect for you.

In this article, I will show you an example of a simple query without an index and then that same query again with the index.  I am certain that you will be shocked by the difference.

More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 27 Feb 2009 @ 09:20 PM

EmailPermalinkComments (7)
Tags
Tags: ,
Categories: Optimization, SQL, Theory
 24 Feb 2009 @ 3:36 PM 

I’ll continue today with another good database programming article.  If you missed yesterdays, you may view it here.

Today’s article will discuss when to use a static COUNT() versus a dynamic COUNT().  On a regular basis we are tasked with creating a message center or a photo album and we need to display a count of new messages or pictures in the album.

The obvious solution is to do a simple query: SELECT COUNT(*) FROM pictures WHERE album_id = 1 and display the result beside our album name.  Now, let’s assume that we allow multiple albums our actual query would be closer to this: SELECT albums.*, COUNT(pictures.*) as picture_count FROM albums INNER JOIN pictures ON albums.id = pictures.album_id WHERE albums.id = 1.  This will of course work, but let me show you a better, more practical approach that will improve performance significantly on large databases. More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 24 Feb 2009 @ 03:36 PM

EmailPermalinkComments (2)
Tags
Tags: , ,
Categories: Optimization, SQL, Theory
 23 Feb 2009 @ 4:51 PM 

Quite often we get a complaint from a client that their homepage is too slow.  The first thing we do is load the homepage up and see for ourselves.  Yep, it looks slow, so the next step is too see what is being done.  Quite often you’ll see some random data being displayed on the homepage.  Whether it’s random news articles, photos, videos, etc…If this is not the case, you may find my article on improving slow loading web pages more useful.

If the homepage is slow because of random data, you can lay a bet with high certainty that those 10 random articles are being pulled with an ORDER BY RAND() OR NEWID() slowing the site to a crawl.  In case you are curious the difference, RAND() is the MySQL way and NEWID() is the SQL Server way.  In this article, I’ll show you why you should avoid these functions and several different solutions to help you overcome this issue. More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 23 Feb 2009 @ 04:52 PM

EmailPermalinkComments (3)
Tags
 18 Feb 2009 @ 2:56 PM 

Recently on a project I was working on, I was tasked with fixing drag and drop that was terribly slow.  The drag and drop was implemented with scriptaculous on a calendar system.  When you clicked an event to drag it it took about 5 seconds before the page would actually let you drag it!  This was clearly unacceptable and it has to be possible because Google Calendar is lightening fast.

 The first thing I did was download and setup jquery to see if it was related to how scriptaculous was created.  After setting up jquery, it was just as slow.  This lead me to believe that it was a fundamental problem with how the drag and drop was set up in both libraries. More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 17 Feb 2009 @ 06:12 PM

EmailPermalinkComments (3)
Tags
 16 Feb 2009 @ 1:16 PM 

The following article is going to be short and sweet, but applying this technique will help you move up those all important rankings.

The technique involves updating your <title> tag.  With a few simple changes, your ranking for your targetted keywords will begin to immediately climb (well not immediately, but next time Google crawls your web page). More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 16 Feb 2009 @ 01:16 PM

EmailPermalinkComments (2)
Tags
 13 Feb 2009 @ 12:05 PM 

When you do SQL queries do you find yourself always, or almost always, using left joins?  If you’ve answered yes to this question, I would suggest to continue to read and understand some downfalls that you might be getting yourself into.

Let’s start by looking at a standard query that has a left join:

SELECT * FROM users u LEFT JOIN countries c ON c.id = u.country_id WHERE u.id = 5

The following query will return all fields from the users table and all fields from the countries table.  Now you’re thinking, “Yeah, looks good, so what’s wrong with this?”.  Well, I’m glad you asked. More »

  • Share/Bookmark
Posted By: Jamie
Last Edit: 15 Feb 2009 @ 07:19 AM

EmailPermalinkComments (0)
Tags

 Last 50 Posts
 Back
Change Theme...
  • Users » 14
  • Posts/Pages » 75
  • Comments » 236
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight