jasoncalacanis's Avatar
jasoncalacanis 10
1169 Asked
1562 Answered
423 Best
8
No one has voted on this question yet :(
2 years, 6 months ago

How would you make Mahalo's pages load faster?

Server/tech peeps: take a look Mahalo Page Speeds over time

http://bit.ly/mahalospeed

This page "feels" absurdly fast when I load it, but it's gotten slower over the year according to pingdom:
http://www.mahalo.com/stem-cell-research

... and let me know how you would make things faster. Best answer, M$100!
images:
Tip for best answer: M$101.35
Separate topics with commas, or by pressing return. Use the delete or backspace key to edit or remove existing topics.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

What is Your Answer?

0
0
0

40 Answers

17
robbrown's Avatar
robbrown | 2 years, 6 months ago
4
http://farm3.static.flickr.com/2685/4138661501_0d0e920985_o.jpg

According to this, Mahalo has made a significant improvement. Congratulations!

Here are some things that I would do:

1)
If Mahalo doesn't already run on an SQL alternative, I would consider moving. Something like Cassandra may work particularly well to increase overall speed.

2)
Next, I would carefully evaluate Mahalo's CDN (content delivery network). Often, speed can be increased by tailoring a CDN specifically to the traffic that is causing bottlenecks. If you're looking to maximize your speed, I would consider building your own CDN and leasing unused time back to smaller companies. A CCIE on staff (or contracted) with full control over your CDN could set up some wicked awesome routing that can truly change the game as far as bandwidth is concerned. Also a quick review of the DNS setup with proper configs can speed up the initial page load which is what most people judge speed on.

3)
Next, I would look at exactly how pages are cached and served. I would carefully review the routing configs, low level (server) hardware and every piece of software that contributes to the distribution of a every page on Mahalo. If you didn't have it already, this would be part of a "topology" project where I would map each and every device and route so that I could visualize and identify problems before they occurred. Reviewing both upstream and downstream bandwidth routes and reviewing existing bw commitments would be an important part of this step.

4)
Then, I would turn to design. I would cut back (way back) on the number of external program calls. I would carefully optimize the CSS. I would even go so far as to ensure that every sprite map and every image was optimized to the "point of no return" so that the content itself didn't cause a problem. It looks like M3 has already implemented a plan to streamline SERP's, but I think that deeper cuts and self hosted alternatives would provide an even more significant gain.

5)
Last, I would develop a clear and regular maintenance schedule, implement a real time alarm system (with limits for speed alarms), and ensure that every "staff" wheel was greased and completely understood every nut and bolt so that my ship would run like a Ferrari on the track. This is why I name my servers after race cars :)

So, that's a general overview of what I would do. This is a very difficult question to answer specifically because every (every single) setup is different. However, if these 5 pieces of the web world puzzle all work well and are managed well speed problems should be seen well in advance. In Mahalo's short history, it has grown so quickly that these types of fundamental actives would have been difficult to justify and budget. I think companies live and die in this sort of work.
source(s):
I've been employed to do this sort of thing.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

@mshubin THANK YOU, For answering and adding to all of this.

First, can you give me your humble opinion about cachefly?

CS has been using them as their Squid CDN for a number of years now and are still partnered with them. They have been using them even as far back as 97.

I humbly believe as Mahalo is growing so is its market and target audiences !
This includes unfortunately some that might not have english as their primary language. I think this also is why we are receiving the amount of untimely and uncharacteristic anonymous questions. As well as the new user usage jump.

I'm going to finish reading what you wrote and give you a broader perspective of my opinions on the matter.

PS: VERY IMPORTANT!

Mahalo's greatest asset is its staff!
We should use that to our advantage somehow.

robbrown's Avatar
robbrown | 2 years, 6 months ago Report

Hi Xds! In my answer, I mentioned that, "this is a very difficult question to answer specifically because every (every single) setup is different." By now, Mahalo must have accumulated a considerable of about of virtual and physical assets.

It could take a considerable amount of time first to untangle and understand that existing infrastructure and then lay out a specific, actionable plan to get that done.

Jason did not provide a lot of details. A lot of the details required to compose a step-by-step answer would require knowledge of the private and confidential inner workings of Mahalo. I don't have this knowledge. I believe what Jason has done here is post a thought provoking question and (I hope) is looking for an answer that outlines the generalities of what should be done to speed up Mahalo.

xds's Avatar
xds | 2 years, 6 months ago Report

It's kind of unclear if mahalo does or doesn't run it's own NOC or not, although I would understand why you wouldn't want to say.

I do understand they use EdgeCast but for exactly what purposes, is this just as their CDN ? or click search provider ? or what ?

I've heard references allot of times to servers there AT mahalo. This is awfly confuzzling.

Also it would be great if we could get some stat data off the servers themselves no matter what the capacity. It's kinda hard to tell what the sticking points are and what could be in need of changing.

xds's Avatar
xds | 2 years, 6 months ago Report

@mshubin , I'm so happy you replied FINALLY! , I guess you had a nice weekend :P

Happy to know mahalo still is planning for long term.
The good thing about cachefly is that they will work with you hand in hand with what your goals are and come to a equal mutual benefiting plan.

They are far less contract based and far more candid when it comes to seeing startup succeed. I implore you guys give them a call.

Note i don't have any affiliation with them whatsoever.

CS has used them since birth, I've watched them grow into the apple apps store delivering service they are today, with over 100 Million users in over 25 countries.

Also what is to become of this question, im just curious Jason has removed it from the front page :-/

I thought it should have hung out for a little longer than it did, specially for 100M$.

chriswingate's Avatar
chriswingate | 2 years, 6 months ago Report

regarding #2, perhaps Mahalo could lease some of that unused time to sites we're "helping" like Conundrum?

xds's Avatar
xds | 2 years, 6 months ago Report

@mshubin

If you still want to leave your options open for the future, for in house stuff (for now) I would recommend Hadoop , it has mapreduce, a high availability database, and a high availability file system visa vi bigtable .

All the big boys use it , google, yahoo, and even big blue (IBM).

( 1 tb of data sorted in 209 seconds ) =P

http://hadoop.apache.org/

For extremely small off site work check out nexenta http://www.nexenta.org/

This might sound selfish but I just hope the growth doesn't come at a cost to the rest of us :-/

mshubin's Avatar
mshubin | 2 years, 6 months ago Report

@xds Basically we don't do a lot of big iron processing that requires a distribute model like a Beowolf cluster or a COTS solution from a company like SUN.

What we do and really need a better system for doing is storing large amounts of data and making said data highly scalable and highly available. Mahalo is "read-heavy" so having lots of machines available to accommodate these reads and store this data in a structured way is really what we need.

robbrown's Avatar
robbrown | 2 years, 6 months ago Report

Leasing unused network resources back to smaller companies is a great way to earn a bit of extra money and keep an eye on the bottom line. If planned carefully, leasing time and especially support (if you have a rock star admin or network guru) can significantly offset startup infrastructure costs. Some smaller hosting companies and bandwidth providers jump all over this sort of setup so it can be pretty easy.

mshubin's Avatar
mshubin | 2 years, 6 months ago Report

1) Right on. We currently run a couple of different NOSQL systems, but none of them are actually fully distributed like cassandra. We are currently looking at Cassandra to take over for these and to move other parts of the site to.

2) We use a CDN for our static content, but since mahalo is very dynamic using a CDN can help only so much.

3) This is all optimized. For non logged in users a full page is served from memcache through nginx (I have a solution in my head to use something like a CDN to serve these).

4) This is where we're going to get the most improvements, but there are other people at Mahalo who know more about this and why we do the things we do better than I do.

5) We are always looking at better ways to alert the staff when things go wrong. I will refrain form going too deep into this because of security reasons.

I really like you solutions. Honestly the other answers I've seen don't even address the issues you see on a highly dynamic, high traffic site. We've looked at the most obvious optimizations and now we need to look at the less obvious one.

xds's Avatar
xds | 2 years, 6 months ago Report

@mshubin

Hope you don't think i'm being rash with these suggestions.. It's just the way I think.

A good place to start would be something like ROCKS or Kerrighed. To get a feel for DC.

....But yeah, putting this into a XUL extension would be the ideal idea.
The best part about it is, I think 99% of the active users on here trust the staff enough that they would gladly install and use something like this.
More importantly they trust the sites creator.

xds's Avatar
xds | 2 years, 6 months ago Report

ps: Sorry if this sounded like a total noob comment rob theres just allot thats kinda unclear here.

xds's Avatar
xds | 2 years, 6 months ago Report

@mshubin

First, Like i said above, thank you for taking the time out of your busy day especially on a friday night to come talk to all of us and fill us in on the current platform.

Why did I mention cachefly ?

I mention cachefly because of the shear amount of new traffic coming in from outside of North America. I believe as mahalo is growing it's user base will eventually widen. Mahalo will either need to tighten its belt (Like Hulu is doing) , or Loosen its grip. And start catering to other parts of the world.
( Like how Hispasec systems took VT ) ( Or Google took GoogleSearch )

Now this might sound a little insane...

Lets take a look at the hardware in the office.

Judging by what you have brought me you have told me more than enough, casandra or no casandra Mahalo's greatest asset is its user base & I think eventually what you guys need to push for is a system based on distributed computing.

Whether this is done through a Gecko 3.5 based XUL extension (firefox extention) or whatever.

What mahalo needs right now is for its users to also start pulling some of the weight. Especially if they are serious about their stay.

At first it wouldn't have to be much.
(I have heard threw the grape vine some of the staff want a Mahalo "bar" or "search bar" anyways)
Have it do some basic number crunching at first to get a idea of what you guys could be capable of.

And like i said, mahalo's greatest asset is its staff and user base.

USE THAT.

mshubin's Avatar
mshubin | 2 years, 6 months ago Report

@xds I am familiar with distributed computing, in particular beowolf and ROCKS. In our particular case it does not apply and is not a replacement for a distributed, bigtable like, datastore with Map-reduce functionality like Cassandra.

In the case of CDNs (like cachefly) we'll go with the most cost efficient solution.

I do agree with you that our future traffic is going to be coming from outside North America, but we need to make sure out coverage in North America is sound before we concentrate on international Markets.

robbrown's Avatar
robbrown | 2 years, 6 months ago Report

Mshubin: Thank-you for you're reply! I'm very happy to hear from one of the Mahalo "developers" although judging by your profile, being a storage guy, you live more on the server side of stuff.

Storage must be a pretty big deal to Mahalo. From distributed storage, to caching, to backup and recovery, you must have a pretty interesting job.

"We need to look at the less obvious one."

To me, this level of tuning is where proper planing and documentation start to pay off.

One of my favorite exercises is to have the Visio topology and functionality overviews printed off one a large format printer.. the kind that you can find at Kinkos, the ones Architects use. Toss these pirntouts down on the board room table. On a large whiteboard, write down the specific problems that need solved. Give everyone a different colored pen and say "have at 'er - fix these problems".

At the end of it, you'll (hopefully) be left with a series of actionable items and a couple of large maps with the steps that need to be taken to implement those refinements.

I have no idea at all if this will work for you guys and I wouldn't presume to make any real suggestions because from what I know, you guys are smarter than I am. It's just something that I've done in the past and has worked out really well.

Report Abuse

Post Reply Cancel
4
blister's Avatar
blister | 2 years, 6 months ago
3
A) Combine as many Javascript files together as you can.
B) Set up a second server to serve all static content (js, images, css, etc) and serve it cookieless (request headers add a little bit to each request). The example being that there is no reason I should be sending my cookies to content.mahalo.com. You need to buy a completely separate domain to handle this. Maybe like mahalo-static.com or some such.
C) I assume that a site as large as yours must have caching in place. Maybe you can be a bit more aggressive in your caching strategy. Talk to your developers.
D) Work with your ad providers. Some of the slowest loading things on your page are your advertising content. Mahalo is a pretty big site now. You might be able to throw some weight behind a complaint to Google. Any performance increases you can get benefits everyone. :D
E) I would say optimize your SQL, but I don't think you can be where you're at without already having pretty awesome SQL.

It loads fairly quick for me as well, and it never feels slow. So keep up the good work.

I think combining resources (listed as A and B) is really your best bet.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

I agree with B. But all around good answer.

Report Abuse

Post Reply Cancel
3
seanpower's Avatar
seanpower | 2 years, 6 months ago
3
Executive summary:

The largest source of latency comes from third party uncompressed and uncached images coming from Flickr and lacortedelraydelpop.com. I used AOL Page Tests' http://www.webpagetest.org and Keynote's MyKeynote to help measure this. See the graphs at the bottom.

The long story:

By way of introduction, I’m the co-author of Complete Web Monitoring, which I wrote with Alistair Croll (@acroll). We’ve spent a lot of time looking at these types of problems.

Let’s begin:

If you go around tweaking things to make your site faster without a strategy, then you may wind up spending a whole bunch of time & effort on stuff without it having a noticeable impact on your business’ bottom line. To avoid performance tuning without wasting your time, there are a few steps that you should follow:

Figure out what you can fix (performance audit)
Prioritize what you can fix
Measure the impact of the fix

Figure out what you can fix:

First, figure out what hurts the most. To understand where things get slow, we need to use a cascade diagram of performance. These tools track every single connection that happens when you load a site and tell you how long each one takes by allowing you to visualize it through a cascade diagram.

In this case, let’s use AOL Page Tests’ utility (http://www.webpagetest.org) to measure Mahalo.com

The results can be found here: http://www.webpagetest.org/result/091127_38T2/

This first attached graph tells me that 27 connections are made every time mahalo.com is loaded. Calls to flickr.com are adding a whole bunch of load time on mahalo.com’s main page. You may want to create a script that locally cache images instead of calling them from a third party site.

Furthermore, you should invest in time / technology to make sure your images are compressed, reducing overall page load time.

The problem is that AOL Page Test is looking at what’s slow right away, instead of “on average, what’s the most slow”. To do this on average, you’ll need to use a more sophisticated tool.

Vendors in the space include: Webmetrics, Keynote, Gomez & Alertsite.

Prioritize what to fix:

I’m not going to spend a lot of time here, but it’s important to mention that you need to consider the cost of the varying forms of optimization. In other words, it may take 6 months of development time to make sure that you have compression and spriting in order, which could end up being more expensive than purchasing an appliance or CDN that can do this for you.

Make sure you take the time to consider how much your optimization efforts will cost so that you don’t end up raiding windmills.

Measure what you’ve fixed:

Also, find out how fast is “fast enough”. You can make your site load faster than light, but on average, it may turn out that Mahalo users may not care about performance increases as long as pages load faster than 2 seconds for them.

You need to figure out “how does web performance correlate to our business goals”. A business goal can be things like “adding an answer”, “reading an answer”, “commenting on a post” and so on.

To do this, split test your traffic, and make the site faster for a small percentage of your users. Drop a cookie in their browsers saying “I’m optimized!”. Then, use Google Analytics to compare your conversions (ad clicks, pages surfed, comments posted, etc) for the unoptimize segments and the optimized ones.

We’ve seen businesses do this by using web acceleration devices like Strangeloop Networks, Akamai or Limelight on 50% of their traffic, then using Google Analytics to track the impact on conversions as a result.

You can read more about this here (http://bit.ly/7ikPAr) with associated PDF here (http://bit.ly/5mrqLl).
source(s):
www.webpagetest.org, www.watchingwebsites.com
images:

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

This may also sound crazy but just to add to that.

Speed might not necessarily be the absolute BEST thing ALL the time, fluidity however might be more of importance.

Getting an idea of what Mahalo's user agent share looks like would be great.
I could imagine however atleast 35-50% of all mahalo's most active users use some form of the Gecko engine based version of firefox or some other derivative.
However the "noobs" (sorry to the noobs BTW) , might still be using IE or IE7/8.

Also keep in mind not everyone has a ultrafast connection, some places up north here still use dial-up. My 85yr old neighbor refuses to switch and still uses AOHell. :(

Report Abuse

Post Reply Cancel
3
driverdan's Avatar
driverdan | 2 years, 6 months ago
3
There are two types of optimization you need to address here: server-side and client-side. Since we don't have access to Mahalo's server-side architecture it's pretty hard to offer an explanation for Pingdom's high response times. The 2+ sec it's reporting is a result of server-side and/or routing issues. I'm consistently seeing sub 1 sec load times (excluding page render time) so there may be a problem with the route between Pingdom and Mahalo. If there is an issue with 1+ sec response times then there may be too many DB queries and not enough page caching. One trick to get the page rendering faster is respond with the beginning of the page ASAP. Spit out the doctype as soon as all headers have been sent to the client. This will get the page to start rendering faster and give the impression to the user that the page is loading faster than it actually is.

On the client side there's plenty that can be done to improve load times and user experience. Some have already been covered by other user's answers but I'll address them anyway.

1. Reduce requests

Between CSS, Javascript, and images Mahalo has a high number of server requests that can be significantly decreased. I'm seeing 19 Javascript files, 3 CSS files, and a varying number of images. Most of the Javascript files can be combined since they are loaded on all of the pages. An alternative would be to use a loader like LABjs (http://labjs.com/) to use non-blocking JS loading. The CSS files can also be combined. The site is already using sprites for its standard images so there probably isn't a lot that can be done to reduce the number of image requests.

2. Optimize Javascript usage

There is Javascript scattered throughout the pages with a large number of files included in the head. Much of this can be shifted to the end of the document to decrease page rendering time. All of your tracking JS can be moved to the end (minus the date at the very top of ).

3. Minify JS and CSS

It looks like most of your JS is already minified but your CSS is not. Minifying it will reduce the bandwidth required.

4. Reduce DOM objects and strip out HTML comments

Mahalo's HTML is pretty heavy. The more DOM objects the longer it will take for the page to render. Have your developers look through the DOM and remove unnecessary divs and other elements.

5. Replace eTags with Expires headers

This will show a BIG improvement for full cache page loads. None of Mahalo's static content uses Expires headers. By adding far-future Expires headers a page load with full cache will require a lot fewer requests and will load much faster.

6. Use multiple domains for static content

Use multiple domains (eg static1.mahalo.com, static2.mahalo.com) for static content. This will allow some web browsers to increase the number of parallel requests and download static content faster.

7. Get rid of unnecessary meta elements

All pages have Bing and Google verification meta elements. These can be removed and replaced with their verification files. It will reduce page weight.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
3
justindorfman's Avatar
justindorfman | 2 years, 6 months ago
8
Combine external JavaScript
There are 18 JavaScript files served from content.mahalo.com. They should be combined into as few files as possible.

* /content/scripts/jquery-1.3.2.min.js
* /content/scripts/jquery-ui-1.7.1.custom.min.js
* mahalo3.js?v20091124
* /content/scripts/jquery.simplemodal-1.2.2.pack.js
* /content/scripts/jquery.autogrow.update.js
* /content/scripts/jquery.treeview.pack.js
* /content/scripts/jquery.rating.pack.js
* /content/scripts/jquery.hoverintent.min.js
* /content/scripts/jquery.cycle.all.min.js
* /content/scripts/jquery.bookmark.js
* jquery.ajaxupload.js
* /content/skins/mahalo3/scripts/jquery.htca.js
* /content/skins/mahalo3/scripts/jquery.metadata.js
* jquery.checkbox.min.js
* mahalo3-serp-common.js?v20091124
* mahalo3-serp-sheriff.js?v20091124
* /content/scripts/sheriff-0.1.js?v20091124
* /content/scripts/chartbeat/chartbeat.js?v20091124

via FireBug

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
christhomson's Avatar
christhomson | 2 years, 6 months ago Report

I have just a couple more things to add:

a) before dumping EdgeCast, try setting up a custom domain (not sub-domain). Several Mahalo cookies (with a domain of .mahalo.com) are being sent to content.mahalo.com on each request, which aren't needed.
b) try using Google's Ajax Libraries API for the first piece of JavaScript (jquery-1.3.2.min.js). If the person has already visited a site that uses Google's Libraries API, then it will already have been cached in their browser.

xds's Avatar
xds | 2 years, 6 months ago Report

I wouldn't just ditch EC right away, I would go to them and say...

Hey look

... this is whats going on.. if you want to keep our business.
..............This is what needs to change.

And then show them this question =)

justindorfman's Avatar
justindorfman | 2 years, 6 months ago Report

Also you might want to dump EdgeCast and go with Akamai as your CDN. "Akamai is a Hawaiian word meaning smart or intelligent." So if you put Akamai and Mahalo together you have a website that is smart & polite at the same time. How do you like dem apples? ;)

Report Abuse

Post Reply Cancel
2
ara818's Avatar
ara818 | 2 years, 6 months ago
3
I'd say right now Mahalo would get a lot more bang for your buck by optimizing front end performance ... It appears not much of that is being done right now and it'll improve Mahalo's performance by double digit percentage points easily.

The person doing the best research in this area right now is Google's Steve Souders (http://stevesouders.com). Here are the slides to a talk he gave about the topic at SXSW last year: http://www.slideshare.net/souders/sxsw-even-faster-web-sites

1.) Part of the build process should include collapsing JS files into one file, minifying them and so exposing only one, much smaller file to the browser. This can be done per group of pages that share the same code (search result page, front page, answers page whatever) ... For frameworks like Django, there are packages that do this for you (http://code.google.com/p/django-compress/) ... for custom codebases, it will require some work but is worth it.

2. ) The same should be done for css files.

3. ) Once JS and CSS files are auto generated per build, meaning a differently name file is generated per build, they should be sent by the server using "Far Futures Headers" which will ensure browsers will cache the files forever essentially helping repeat users not have to re-download JS/CSS.

4. ) If collapsing JS and CSS files is just too much work to implement onto your codebase then initially, at the absolute minimum, you should be minifying every JS and CSS file during a build. Server side tools exist to do this and should be incorporated into your build process (http://www.crockford.com/javascript/jsmin.html for JS, http://csstidy.sourceforge.net/ for CSS)

5.) It appears Mahalo is not compressing JS and CSS files right now. All JS and CSS should be GZIPed by the web server before being sent to the client. (This is on top of minifying). An exception should be put in for IE6 (at the server level based on User-Agent string) as it does not decompress JS file and execute them correctly for versions before XP SP2.

6.) It looks like Mahalo appends a lot of bits of JS at the end of the HTML for various services like Quantcast, ChartBeat, etc... In a JS driven site where certain actions may be triggered on page load, these scripts are not "free"! If they must be there, they must be included in such a way as to be loaded asynchronously so they don't block page load. There is alot more info in Steve Souders slides about how to do this, but, for example, here is one blog post about how to do this for Google Analytics (http://lyncd.com/2009/03/better-google-analytics-javascript/) ... The same basic method can be adapted to Quantcast, ChartBeat, and other services that require JS to be included in page.

...

Looking at the backend, not knowing any of the existing infrastructure, I would say, in general:

1.) Cache, cache and cache some more. Every where, in every layer of your service.

2.) Move away from relational databases where they don't make sense. If you're not doing join, than a "NoSQL" database can be orders of magnitude faster and easier to scale. Not knowing any of your infrastructure, it would be hard to make a recommendation as to exactly which one to use.

...

So that's the pretty basic stuff that should be part of bast practices for any large web service. Beyond that you're going to have to get pretty fancy.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
2
kressaty's Avatar
kressaty | 2 years, 6 months ago
3
your facebook connect JS is loading twice sometimes, costing space and speed, especially since that isn't coming local but from a facebook server that you don't control.

the images on the home page are your biggest problem - make the page load, then pull in the images behind the captions via a quick jquery ajax request instead of loading on document load - this will increase initial load time and not slow you down so much due to outside sites hosting images.

also - the fact that you jumped from low to way higher very shortly after launching 2.0 could point to another issue - it's possible pingdom changed something, or their algorithm figured out that your page is loading more content as it cycles through the results in the top section of the page. because of this, the point in time in the load where they stop measuring and declare the page "loaded" could have changed even though it's way past a true "loaded" state.

use the debugging tools in webkit browsers (safari, chrome) to look at load times for each individual file, as well as sizes of your external assets (js, css, img) to find easy "get this crap outta here" ways to reduce load time. it's likely that your backend architecture would result in much lower increases in performance, so i'd stick with these client side files first since they're often the most overlooked these days when developers are spending most of their time in the backend and designers to much of the front end dev.

also, it seems that many people are recommending other plugins or things to insert into the page to make it load faster - i'm not a fan, simply because it's another thing that can 1) break and 2) you have to keep updating and might not use in the future. web standards are standards for a reason, and usually going the simple yet creative route will yield the best possible page!

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
christhomson's Avatar
christhomson | 2 years, 6 months ago Report

Just thinking out loud here:

Instead of loading Facebook Connect for every page request, why not only load it on the login page? Instead of displaying the FB connect button up in the top-right of every page, why not just include a link (including mention of Facebook Connect... maybe the FB connect image, but just linking) to the login page where the user can login with FB connect if they wish?

Report Abuse

Post Reply Cancel
2
apeofsteel's Avatar
apeofsteel | 2 years, 6 months ago
3
From a purely front-end perspective :

1) Defer all non-essential javascript loading until the very bottom of the page. By non-essential, I mean anything that won't cause an error if a user clicks a button etc before it's loaded.

Loading javascript source files blocks the browser from downloading anything else simultaneously. If you have a stack of them in the middle or start of the page, it's preventing other things from loading.

2) Minify all CSS and javascript files using something like this: http://developer.yahoo.com/yui/compressor/

3) Use CSS sprites (I think you're already doing this judging by most of your buttons).

4) Use a separate content server with far-future expires headers, no cookies, and gzip compression.

5) Optimise images

6) Follow this guide: http://developer.yahoo.com/performance/rules.html

If you're testing using firefox, install the Yslow and google's pagespeed plugins which will give you plenty of other suggestions.

From a UX perspective: One solution would be to split large content pages into separate sections where the user has to click a "read more" section to download the additional content via ajax or a similar mechanism.
source(s):
http://developer.yahoo.com/performance/rules.html
firefox firebug, yslow, pagespeed plugins

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
2
romeo0830's Avatar
romeo0830 | 2 years, 6 months ago
3
I speak from experience here as I had a very similar problem with load time..

I guess you are worried because many are complaining on slower computers mahalo is very tough to load. I don't have much difficulty on my end but im on a cable connection with a pretty quick computer.

Lets get to what is needed to lower this load time.

1st. While it is great to start buying new servers and such to lower the page load time, it is most probably all dependent upon how the coding is setup, possibly duplicate query's completing the same tasks.

2. I would take all your major pages being used like index.php and shrink them using html shrinker light. It is a free program and can reduce KB of your site dramatically.

3. As XDS stated start using sprites, it is personally used on my site shoptimesaver.com and I can say from experience our page load time has decreased by 50% using sprites.

4. Consider removing pages from the Data Base that are pointless, things like the sex pages in which take up much of the DB, most probably slowing your search down dramatically.

I have 2 expert programmers and 1 expert designer if needed that can easily incorporate sprites into the site and optimize the DB level if needed.

Take my advice, don't up on your servers or change anything on the server level, its not necessary to throw hardware at bad coding. Just get a great coder and they should be able to optimize this site so it runs 3 x as fast if not more.

If you need more info or would like to speak with my guys let me know.

Thanks, Mike !
source(s):
Personal Experience on my site shoptimesaver.com
images:

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
romeo0830's Avatar
romeo0830 | 2 years, 6 months ago Report

I also wanted to note as I was seeing some other comments, i want to second the motion on removing the quantcast code as it lags the site some when you get to the end of the loading. Quantcast is sort of unnecessary I believe, im not even sure why you would want your information out there like that, I know some of the big names are doing it but it just slows down the site so it's not worth it.

Report Abuse

Post Reply Cancel
2
mglenn's Avatar
mglenn | 2 years, 6 months ago
4
There are several things you can do between the server and the browser to speed the site up. This will make the site feel faster but also take load off the server. This may not bring down raw page ping time however as you would need to explain at least some of the technology on the backend.

Using YSlow on the homepage yields the following simple server to browser fixes.

- reduce the number of requests
- There are 13 Javascript includes. Combine them into one file
- There are 3 stylesheets. Combine those into one file.
- There are 55 background images. Combine them into one file and use CSS sprites
- Use a CDN like Akamai or CacheFly.
- There are no expires headers. This is HUGE! Simply by adding a expiry years out into the future and then making your static files have date and time stamp arguments like ?20091127 you can have them cached in the browser forever speeding up subsequent requests
- A few components aren't being compressed (gzip)
- Not all JS and CSS have been minified

Those should help but as I mentioned you'd need to specify the backend technology.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

I like your idea of non expiring headers for files, good catch no one else mentioned. Gzips also a GOOD _IDEA_, but not really realistic with a site as large as this and as ever changing.

You also mentioned cachefly which I just caught, great answer. +1

Report Abuse

Post Reply Cancel
2
xds's Avatar
xds | 2 years, 6 months ago
15
Right off the bat I have a slew of suggestions......

First and foremost.
& I see you are already doing this for parts of the main page but...

Sprites Sprites Sprites...
#1 >>>Make the entire page just one giant sprite.<<<<
Here's an example of a page sprite for those of you who don't know what i'm talking about.
http://blog.mozilla.com/webdev/files/2009/03/main-sprites1.png

Have all the pages load the same combined image, then pre-cache it.
Your developers should be able to find a way to have the users machine load the sprite continuously for each newly clicked page.

#2 Standardized thumbnails.
Find what the most common size is for graphics and use those instead of your 90x90's which you currently have there.

#3 Load JS and Styles LAST! (css before JS however)
For the life of me I can't understand why mahalo pages always insist on loading the java script with the pages as they are loading ?
Once a user already has a page cached in their temporary internet files that pretty much takes the place of what they necessarily "see" from here on out.

The first page might be like giving birth for the first time but everything after is like riding a bike.

#4 Ditch the meta tags/elements.
With a big site like this the major search engines don't really need to pay close attention to that stuff and it will only cause stopage.

MOST IMPORTANT
#5 Increase your ceiling.
I've noticed that in the early hours PDT and Mid day EST then right after the kids come home from school and when everyone first jumps on their system to check their Mail / Mahalo / Mahalo DQ's and everyone starts pounding the site comes to a screeching halt.

The site must be run on some type of scaling server. This isn't necessarily the best fit for a startup, you have issues with usage clumping.
Ask the devs to give mahalo's resources in some places a little more leeway or...

**************************************************************************************
Provide us a premium version of mahalo that we can use our mahalo dollars to buy every month that is ad free on our side as well as faster and more robust.
***************************************************************************************

Also if I may be so bold as to refer you to a "Squid CDN"

These guys ...... CacheFly.com setup delivery servers all over the world for hosting content if mahalo could partner with them it would make you guys unstoppable!

_

_

If you run your own in house servers/services some other things I would suggest......

#1 Get on a bigger badder backbone.
Get in touch with whoever controls the "pipes" coming in and out of the Mahalo NOC and ask them if they have any developing technologies that they can work with you on getting implemented their.

When the NECC (The non-profit I work for) moved into the North East cox was doing our net and services, they had many different options, but I insisted to meet with the regional product manager.

He sat down with me and had a long meeting, we discussed our options and he filled me in on everything cox would be beta testing that year.
Our north east offices where the first to get DS3.

And then later transitioned to fiber. If your serving over wireless get in touch with the guys over at RuckusWireless or the guys over at Xirus.

Either of which can help you widen your pipes for the escalating user base.

#3 Switch to linux from Windows IS/Windows Server
If you haven't already, my god...... WHY
Not only is linux open source
(so you can run anything your heart desires on it)
But its free, its far more secure if you know what you are doing, and can be allot more pleasant to use all around.

#4 Solid state media
Checkout solid state media and run front end graphics such as sprites and landing pages on it.

I would take a look into what crucial and OCZ are putting out!, the numbers are just insane.
...... PCI-E 2.0 drives with un heard of 1000/750 read/write speeds.

Checkout this video on the fusion io. VERY INFORMATIVE !

http://www.youtube.com/watch?v=VS9Zxnx-r0E

Sorry to say it but If you haven't found the solution by now then you simply need to start throwing some money at it. $$$

In other words yeah ....Upgrade the boxes.

Kind Regards,
@XDS
source(s):
CacheFly - http://www.CacheFly.com
Mozilla Labs Sprite http://www.Mozilla.org
And whats left of my brain this month from all the monotone.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

That should say were* the first to get DS3.

xds's Avatar
xds | 2 years, 6 months ago Report

Blah - ....where the first to get DS3*

Report Abuse

Post Reply Cancel
1
easyeboy's Avatar
easyeboy | 2 years, 6 months ago
9
You need to use parallel scripts, always include CSS files before scrips so that they download in parallel. Also, watch for serialization points in the browser. Google has some tools that will speed up your web pages.

http://code.google.com/speed/

You can also use either YSlow or Cuzillion.

YSlow
http://developer.yahoo.com/yslow/

Cuzillion
http://www.stevesouders.com/blog/2008/04/25/cuzillion/

Be sure to watch the videos below:
videos:

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
1
kidfunkyfly's Avatar
kidfunkyfly | 2 years, 6 months ago
3
Step away from being 100% data driven 100% of the time.

I'm guessing most of the items on the page are gen'd dynamically. Perhaps take a look at the widgets that are used and pre-cache them on an interval as static HTML. Very un-datadriven-web20 but, extra calls to amazon, youtube etc could be mitigated.

As an example: You know the stem-cell page is a high traffic, high latency page. Snatch the amazon stuff on n interval, write it to disk, rinse and repeat. Then pull the content locally. Perhaps, set expiration on it, and let the code dynamically re-cache it with the first request and update the file, It would manage itself almost, and save some bandwidth and hedge against the latency. In this case, you pull the amazon book list dynamically once, then serve it up repeatedly in low overhead html to the next 10,000 views, then update it at your set expiration.

Also, look internally at other data results that is low volatility and do the same (like the reference data etc...)

You get NEAR real-time results and the content quality is preserved along with saving a few bits on the wire.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
1
amybrowne's Avatar
amybrowne | 2 years, 6 months ago
5
well lots of graphics and all those videos on the bottom will slow it down too. I am taking the video section and graphics. I don't think the graphics are optimized and they take forever sometimes to load.

My friend surfs the net on dial up and I know the mahalo pages really are slow for her. I am on cable so Its speedy for me most of the time.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

So talking the video and image section you might tighten your belt on those, I can see how this might be beneficial amy =)

Maybe cut it down from 2 columns of videos and images to 1 for each.
Or better yet let the user decide!

chriswingate's Avatar
chriswingate | 2 years, 6 months ago Report

some youtube videos load faster than others too.

Report Abuse

Post Reply Cancel
1
edwardclint's Avatar
edwardclint | 2 years, 6 months ago
13
To make Mahalo page load faster I suggest you combine all the different files into a single large file and compress that file using gzip. Furthermore, in order to capitalize on the improvement you should also create a cache.

-quote-

"The solution turned out the be simple, combine all the different files into a single large file and compress that file using gzip.

Instead of going for the easy – but hard to maintain – solution I decided to automate the process and thanks to a small PHP script and some clever URL rewriting I now have an easy to maintain method to speed up the loading of pages that use many or large css and javascript files.

The idea is that you have one directory for css files and one directory for javascript files on your server. If you rewrite the URLs that point to these directories to a small script that intercepts the requests for those files. The script loads the file from disk and compresses it using gzip.

You can concatenate different files by simply adding the names of the other files to the URL of the first file.

Take for example the following URLs:
http://www.creatype.nl/javascript/prototype.js
http://www.creatype.nl/javascript/builder.js
http://www.creatype.nl/javascript/effects.js
http://www.creatype.nl/javascript/dragdrop.js
http://www.creatype.nl/javascript/slider.js

You can combine all these files to a single file by simply changing the URL to:
http://www.creatype.nl/javascript/prototype.js,builder.js,effects.js,dragdrop.js,slider.js

Compressing those files takes some time and on a busy server that time will become large enough to negate a significant portion of the improvements you made earlier. But this problem can also be solved by simply adding a cache that stores an already combined and compressed version of the files. The cached version is automatically created the first time that particular combination of files is used and used every time – as long as the files are not changed. The result is that once the cache is created there is almost no overhead and the compressed file is delivered almost instantly.

First you need to download and configure the combine.php script. By default this script look in the javascript and css directory in the root of your website, but if you are currently using different directories you can change these values at the top of the combine.php script. Upload the combine.php script to the root of your website. Secondly you need to create a cache directory that is writable by the web server. Again, by default this script will look for the cache directory in the root of the website, but you can change this in the combine.php script. Finally you need to create or modify your .htaccess file. If you do not have a .htaccess file you can create it in the root of your website and add the following lines. If you already have an preexisting .htaccess file you can simply add the following lines to the file:

RewriteEngine On
RewriteBase /
RewriteRule ^css/(.*\.css) /combine.php?type=css&files=$1
RewriteRule ^javascript/(.*\.js) /combine.php?type=javascript&files=$1"

-end of quote-

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
1
fallen_angel21's Avatar
fallen_angel21 | 2 years, 6 months ago
15
Being in a web company, I somehow have few ideas to share. Here are some tips I know...

1. Getting a high-speed server to host your site is a must. I think this is the first thing that big sites must do. In order for them to cater services to thousands or even millions of viewers, first, your host must be able to handle this many accessing users at the same time.

2. High Quality graphics and flash animations makes the site loads slower. If it's possible, avoid too big images or too heavy images. Flash sites isn't also advisable for big sites.

3. In CSS, it's more ideal to use external style sheets than the ones embedded on the same page. External CSS doesn't have to load everything on the page, it just takes what characteristics the classes must have for that page. Compared to the internal CSS where everything is loaded even the things you don't need for that page.

4. Creat efficient SQL statements. Ugly SQL makes accessing database slower. If your statements are more direct, results for a particular query will show faster.

5. Having indexed tables will also make faster access on the db. Instead of querying a table with thousand records, it will just search on the index where recently queried items are stored.

6. Database clean up... Maybe there are some unnecessary data on your tables that you don't need at all which sometimes are still being loaded on the page. To make the results on a certain page appears faster (without these unimportant data), deleting these items will help. Umm... I think the foolish questions around Mahalo lately must be removed right away. It would not only help on the community, but it will also lighten the load of the db.

I think that's all I know. I hope it helps somehow. :)

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
1
rythie's Avatar
rythie | 2 years, 6 months ago
3
The pingdom graphs you show are only going to be testing the speed of loading the HTML. That aside, as numerous people have pointed out, you need to get someone to run Yslow and do what it recommends.

Assuming the part you care about is the pingdom graph data, then this is what I would do:

I assume Mahalo may have a lot of these in place already

- @mshubin said "For non logged in users a full page is served from memcache through nginx" - there is something wrong there if the page is still taking 2 seconds to load. One thing I would do is put a small, completely static page in the monitoring, which should load instantly on the server side and see how long pingdom takes to fetch that, since there may be a network issue or probably there is still some SQL in there.
- Put a timer on every SQL query on the page.
- Run the slowest queries again with EXPLAIN EXTENDED prefixed to them, look at the indexes being used and check that the query is using the index it was designed for (all queries should be designed with a particular index in mind)
- Setup a mysql slow query log and look through it for slow queries and again run EXPLAIN EXTENDED on it
- Increase the use of memcache so that it covers more queries if possible.
- look at using SSD disks in your database servers, a Ycombinator startup, ReThinkDB is doing some interesting work with that. http://www.rethinkdb.com/
- put more memory in your database servers, and tune to make use of it
- put more memory in the memcache cluster
- Talk to Sun Microsystems who give free help to startups under their startup essentials program

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

I mentioned SSD (eg Fusion io) ...hope they catch on to that.

Report Abuse

Post Reply Cancel
1
envygeeks's Avatar
envygeeks | 2 years, 6 months ago
3
A lot of your problem rises from the fact that you call so much from Flickr, there are some things you need to learn about Flickr, Caching, Pingdom and your own server before you understand that timing with Pingdom can often show false results, but at the same time, internal results show most of your problems stem from the fact that you 1.) Have a lot loading, 2.) Load it mostly from Flickr.com and 3.) Do no real internal caching with a server that works well on fragmented files.

What feels "Absurdly" fast to you, in theory is NOT absurdly fast as well, even cached the page serves in just under 12 seconds. You are loading almost 1.2MB of data, I suggest again, you have somebody comb over your site and give suggestions on reduction, optimization and tips on how to fix this issue.

The easiest tip would be to implement local caching with smart Keep-Alive, and image size reduction through caching, AKA cache the image locally for an hour, resize it using PHP and serve it using a webserver that works well with fragmented file systems.
source(s):
I do this for a living.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

Interesting, care to elaborate any further ?

Report Abuse

Post Reply Cancel
1
brian san's Avatar
brian san | 2 years, 6 months ago
11
In addition to the many great methods already listed (merging javascripts and separating static, non-cookie content to a separate server) I wonder if a "Low-Res" option would be helpful.

Perhaps a small "Low Resolution" link somewhere at the top of each page that just toggles all image and video content into links. (then clicking "High Resolution" returns everything back to normal). Hopefully, the user's selection (low or high) would also carry over when viewing other pages.

This would help with users who are still stuck in dial up land as well as give a "Ridiculous Speed" option to those of us with fast connections.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

I think this would go with what I was saying about a user CP and a "premium" version of mahalo.

Report Abuse

Post Reply Cancel
0
entelia's Avatar
entelia | 2 years, 6 months ago
6
Have you considered multiple levels of caching? By reducing the need for repeated trips to the database on every page load, load time is drastically increased.

Speaking of speed, I just found out that Google is about to inject a new ranking factor into the algorithm – "site speed." check link below.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
jonathanf's Avatar
jonathanf | 2 years, 5 months ago
3

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
jasonbradfield's Avatar
jasonbradfield | 2 years, 6 months ago
3
Use a tool like YSlow, its a browser plugin for firefox..

There are several things you can do that would give you immediate results..

The first one would be to compress your pages. The page in question for me takes around 500ms on your server then 1.2seconds for me to download, compression should improve the download times by around 70%.

Including all page components this page is around 880KB of which this includes many css, javascript and images. I notice that the jQuery javascript library you are using is minified, but you have not minified the other javascript files.
You have 28 components on this page.. try and merge your javascript and css into less number of files. try and move your images into sprites.

Add expire headers to your images js and css. ie google puts a 12 month or more expires on their images.

Regards.
Jason

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
eatthatpopcorn's Avatar
eatthatpopcorn | 2 years, 6 months ago
6
While I don't have any data or stats to support my argument, I can tell you, as a regular Mahalo user, Mahalo has gotten A LOT faster!

Congratulations, no more login problems and pages load up instantly.

My one complaint with Mahalo 3.0 is unrelated to speed. I'm not sure what is accomplished by pushing featured photos and/or videos down close to the bottom of the page. Some pages benefit from a picture being at the top of the page. We live in a visual world!

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
marknadal's Avatar
marknadal | 2 years, 6 months ago
0
1. If not already, turn on and increase caching.
2. If possible, reduce latency by having the closest server to the IP serve the content.
3. Create better organized database tables, distribute them into smaller relevant tables to reduce query time.

If you want more of an explanation, let me know.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
ezyweb's Avatar
ezyweb | 2 years, 6 months ago
4
To options that should be installed on your servers:

APC (advanced PHP Cache)
MCache

Which CDN do you use?

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
qthrul's Avatar
qthrul | 2 years, 6 months ago
4
While everything suggested (well, most of it) will help in some regard, it's also important to maintain an internal metric against pingdom:

0) Contact Web Performance, Inc for a trial to run internally for baseline
1) Contact Keynote and get a trial to run externally
2) Contact Gomze and get a trial to run externally
3) Contact Webmetrics and get a trial to run externally

Ignore the sales agenda for Keynote, Gomez, and Webmetrics but consider keeping a license for Load Tester w/ASA as part of ongoing unit testing internally and for any issue or complaint pages.

Determine which of the these (1-3) your team actually likes as an external service and feels comfortable with as a published team metric tied to their yearly bonus calculation.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
ashleyw's Avatar
ashleyw | 2 years, 6 months ago
3
Cache, cache, cache!

For people who aren't logged in, you can just serve a full page cache most of the time (so practically zero execution time). For people who are logged in, it gets harder, but you can still cache most parts of the page, like for example on the homepage: top users, most popular tags, etc.

And anything which isn't easily cacheable: optimise, optimise, optimise. If Mahalo uses a framework (Ruby on Rails, Django, ect.), then you'll most likely find tons of helper method SQL queries (which are inefficient), which you can rewrite in raw SQL and get some quick improvement. You could also combine the many Javascript files Mahalo uses into one file, and let Google host the primary jQuery library, which will slightly help speed things up in certain browsers.

And finally, some extra or more powerful hardware can never hurt. :)

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
aslan72's Avatar
aslan72 | 2 years, 6 months ago
3
It looks like there are a ton of scripts on that page - is there a separate cluster you can put scripts/images on? Can you do Server Side Includes? Not knowing your current architecture, it's hard to determine what you could do differently...

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
bjornrud's Avatar
bjornrud | 2 years, 6 months ago
3
1) If it isn't being cached, cache the page elements so you're not accessing the db every time. Highly doubt that's your problem, however as I can't imagine Mahalo running without it.

2) Use a content delivery network, such as Akamai for the static assets on the site. Though, as is, it appears you're hotlinking directly from google the lead-in image on the first paragraph. You're kind of at their mercy for how fast they want to serve that image.

http://images.google.com/images?q=tbn:PtPTvpJLrfHT1M:yoursocialburden.dontkeepsearching.com/images/stem-cell.gif

3) I can't tell if pingdom is measuring Time To Render or just Time To Receive the whole page. Either way, one of the things slowing down rendering is your citations code. That javascript looks pretty chunky as it's searching the source of the HTML doc for cites and then building a list of what to show and hide. Calculate that from the backend instead and just have jscript show/hide those citation elements, instead of recalcing clientside *every* time when it's shown or hidden.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
ericstern's Avatar
ericstern | 2 years, 6 months ago
3
I don't know what you're doing behind the scenes, so this is just going by the page's HTML source:

Move JS to just before , where possible. By having scripts in the tag as you do now, slow-loading scripts can block the page rendering. In absolute terms the page should load at the same speed, but the browser will render it much faster so it will "feel" faster.

Compress your JS libraries into one file, or at least as few as possible. I see jQuery Core and three or four libraries in the header. Put them into a single file - preferably minified (not packed - you get smaller files, but the browser has to do a lot of extra work. Also, often times, minified+server gzip is smaller than packed as well). You'll cut out several HTTP requests which should help quite a bit.

Note - same applies for stylesheets, although it seems like it's not a problem here. Ideally, there would be a single external CSS and JS file, though that's not really practical. But one each main CSS, IE fixes CSS, JS libraries, and JS scripts isn't impossible or even too difficult. For page-specific scripts, having them inline at the bottom of the page is fine.

If you haven't already, try to use CSS sprites for images wherever it makes sense - gradients, icons, etc. This also helps remove unnecessary HTTP requests, among other things. On a similar note, check file size for gif/jpg/png - see which provides the smallest size for your requirements. There are also third-party compressor tools which can often knock another 20% or more off of file size regardless of file type and without loss of image quality. Seach around as I don't remember any URLs off the top of my head.

Analyze the page with Yahoo's YSlow or Google's Page Speed firefox extension. It gives lots of tips about server-side stuff with regards to caching, CDNs, and plenty of other areas. See: http://code.google.com/speed/articles/identifying-page-speed-problems.html

In short - minimize the number of HTTP requests, reduce file size, and make browsers cache whatever they can. That doesn't cover everything, but should follow the 80/20 rule nicely.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
martynhenderson's Avatar
martynhenderson | 2 years, 6 months ago
3
No prize for me for copy-paste from YSLow: 8-) hth

Grade F on Make fewer HTTP requests

This page has 28 external Javascript scripts. Try combining them into one.
This page has 4 external stylesheets. Try combining them into one.
This page has 43 external background images. Try combining them with CSS sprites.

Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads. Some ways to reduce the number of components include: combine files, combine multiple scripts into one script, combine multiple CSS files into one style sheet, and use CSS Sprites and image maps.

ALSO: (not copy-paste)

Get your DBA to show you the average SQL execution plan for a page load - see what the cost is from the db side (I'm assuming chunks are served from your back-end database here obviously) - they should be able to explain themselves if there are any table-scans for example, indicating indexing optimisation is required. - also if a high percentage of your content (the sample page on stem-cell research for example) is not really dynamic (the article itself, and the references etc) , this should perhaps be cached rather then built in real-time from the DB (guessing at your site architecture)

without understanding your site architecture its difficult to help much further, but essentially your server admins should be able to prove you dont have a bottleneck server in the chain somewhere currently before you go making major changes.

HTH

Mart.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
0
listrophy's Avatar
listrophy | 2 years, 6 months ago
4
This Yahoo article is a great starting point: http://developer.yahoo.com/performance/rules.html

From looking at the returned source of some of the mahalo pages, I can say that using more than one content server (eg: content1.mahalo.com, content2.mahalo.com, etc) and placing your scripts at the bottom (you currently have 16 external scripts before the page's content) should increase perceived and actual load times.

Without looking more deeply into redirects and caching, these would be some great starting points. In addition, you could add a "?^last-updated-timestamp^" to the end of css href's and js src's. When combined with far-field expiration dates on these assets, you can essentially tell most browsers to never re-download your assets unless they've been updated.
source(s):
http://developer.yahoo.com/performance/rules.html

I'm also a professional web developer.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
listrophy's Avatar
listrophy | 2 years, 6 months ago Report

Also, to automatically figure out CSS sprites for any page, try http://spriteme.org/

That stuff is magic.

Report Abuse

Post Reply Cancel
0
shugart's Avatar
shugart | 2 years, 6 months ago
3
Well, a couple of easy easy things right off the bat when inspecting mahalo.com 's main page:

1. You've got an unmatched at line 121, and an unmatched at line 123. the mainpage document load time is 780ms for me.

2. under all the content.mahalo.com/content/ items, stray away from all the .PNG's, those have a pretty hefty load time, not to mention relatively not needed anymore with HTML5 canvas and CSS3.

3. Why are images being hosted on flicker? That's a huge page load time burden...

4. redo most of the legacy html in HTML5, drop most of the div id fields. for this type of splash page, you shouldn't need 2411 lines of code...

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
-1
aui's Avatar
aui | 2 years, 6 months ago
3
Don't have $100 dollar questions that get about $10,000 of consultant time of IT pros working for free ;OP'''

This question noticeably slowed down Mahalo today with everyone rubbernecking it...

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
xds's Avatar
xds | 2 years, 6 months ago Report

-.- good observation, but it won't get you a helpful vote :P

aui's Avatar
aui | 2 years, 6 months ago Report

This question should probably go to Digg as a 'believe it or not' "Man gets $10,000 in consultant time for $100!"

Make it so, Number 2!

http://digg.com/tech_news/Mahalo_CEO_gets_10_000_of_consultant_time_for_100

xds's Avatar
xds | 2 years, 6 months ago Report

Now you are just being ridiculous :o) ;o)

aui's Avatar
aui | 2 years, 5 months ago Report

Breaking news: Google has a website to help speed up your website: http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=158541

Report Abuse

Post Reply Cancel
-1
victoria_reid's Avatar
victoria_reid | 2 years, 6 months ago
4
Step 1 - Clean off your hard drive so you have at least 10% free.
Step 2 - Clear "History" in your browser. Frequently.
Step 3 - Restart computer.
Step 4 - Buy more RAM

I have yet to buy more RAM or get a bigger and better Mac from Santa, but I use the top 3 techniques almost daily, whenever the Internet gets sluggish and presto! Zippy! It's not just Mahalo, it's any media-heavy URL.
source(s):
www.mahalo.com

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$
aui's Avatar
aui | 2 years, 6 months ago Report

Good idea, upgrade the users! Have them switch from Firefox to Chrome too.

Report Abuse

Post Reply Cancel
-1
kinik's Avatar
kinik | 2 years, 6 months ago
3
Not sure if it's measuring time to first or last byte. If it's the latter, then start by merging your javascript files, and use css sprites.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
-1
nedyasafira2's Avatar
nedyasafira2 | 2 years, 6 months ago
3
I thing when mahalo page openid,we must stop the scripts function,so the mahalo's page will be loading faster.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
-2
jakirk's Avatar
jakirk | 2 years, 6 months ago
3
get a faster computer

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
-2
danrichman's Avatar
danrichman | 2 years, 6 months ago
3
Make the advertisements word only, no pictures. Take out the hubbub but make it colorful to attract attention.

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel
-3
jesuslover037's Avatar
jesuslover037 | 2 years, 6 months ago
3
You can sometimes throw more hardware at the problem. Increasing RAM can sometimes improve caching.

Also, strip out as many SQL joins as you can. Joins are expensive.

The StackOverflow team explains this well in their podcasts.

http://highscalability.com/stack-overflow-architecture

You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.

M$

Report Abuse

Post Reply Cancel

Learn something new with our FREE educational apps!

Private lessons in the comfort of your own home. Get back in shape or finally pick up a guitar with our great experts guiding you the whole way!
Learn Guitar
Learn Hip Hop
Learn Pilates