Thursday, March 18, 2010

Flash!  Aaahh!  Destroyer of the Universe!

I’m a big fan of tabbed browsing when using a web browser.  I tend to launch tabs for a dozen or more webpages at once — for a weekly calendar I do, currently more than 50 tabs at a shot.  This allows me to go through several pages in a row (I just close one tab and the next shows) without having to constantly pull up a new bookmark.

For a couple years, I used Firefox on Windows, but I increasingly had problems where my entire computer would grind almost to a halt.  Task Manager would show Firefox eating up 99% of the CPU, which would force me to kill it and relaunch.

I eventually switched to Safari on Windows, because I found that it would load a set of tabs sometimes as much as 25% faster.  But I ended up with the same CPU spiking problem.  Sometimes I could painstakingly go through each tab and close it until I cleared whatever the problem process was, but this could take a few minutes and only worked some of the time.

I then switched to Chrome on Windows.  It puts each of its tabs into its own process.  In theory, this allows one process to stall or crash without bringing down the entire browser.  (In practice, though, when Shockwave crashes, it crashes across the browser, on all tabs.  But on the up side, I can reload each of those tabs and it will relaunch.)  I still had the CPU spiking, and while I could then narrow it to a single tab’s process, I still couldn’t identify which tab that was or kill just the one tab; killing the tab from the task manager would kill the entire browser.  But on the plus side, Chrome will remember what tabs were open when you quit (or crashed) and will generally reopen them on next launch, so recovery was that much easier.

I’ve also had some of the same problems on my Macintosh, with Safari.  Not as bad and not as often, but still now and then.

By now, I knew what the problem child was: Adobe Flash.  For whatever reason, seemingly at random, a Flash process will go bonkers and eat up all my CPU.  I don’t know if it’s truly random or something I could predict if I knew more about Flash, but it doesn’t really matter.  The take-away is “Flash has problems.”

This is the core of why Flash is not enabled/permitted on the iPhone and the iPad.  It is simply known to cause problems.  Some reports say Flash issues cause like 75% of browser crashes.  I note that even without it, Mobile Safari on my iPhone crashes now and then (as often as a couple times a day, depending on usage), usually when I’m trying to close a page.  I can certainly picture adding Flash into that would increase the likelihood of those issues.

Fortunately, there is a solution!  Block Flash!

Well, no, preventing all Flash on your computer is a stupid solution, a scorched Earth method.  So much of the web has components in Flash that there are things you simply miss out on, as any iPhone user can tell you.  (But on the other hand, much of it is stuff you don’t really need.  One social networking site I’m on uses Flash to make a bit of text pulse when you’ve got a new message.  Talk about something that doesn’t need Flash!  Not to mention all those website intro pages!  And the flashing noisy ads!)

So instead of outright blocking Flash, we can put up a gate.  This prevents Flash from loading when you open a page, but it also gives you the opportunity to load selected Flash elements, such as to view an embedded video or to show the site’s navigation bar (grrrr).  You end up with a far less cluttered page view as a side effect.

On Chrome for Windows, I use FlashBlock.  Firefox users also have Flashblock.

On Safari for Mac, I use ClickToFlash.

My browser CPU spikes have all but gone away (and when they happen, it’s because I’ve disabled the extension!), and my browser crashes and needs to kill/relaunch the browser have dropped by 90%.  (I now have to relaunch a couple times a week, rather than several time a day.) That’s a massive improvement.

Highly, highly recommended!  Use Flash at your leisure, not at theirs.

FlashBlock is not a perfect solution, though.  I’ve found that some of the Apple movie trailer pages use an embedded Flash player (rather than QuickTime, why?) which won’t play when I click it, so I have to disable the extension, reload the page, and then re-enable the extension.  Similarly, YouTube recently made a change which presents a message falsely telling you to upgrade your version of Flash, but again, what you need to do is disable/reload/enable.  I’m hoping that either these sites or the FlashBlock extension maker will be able to repair these issues.  (I haven’t hit them with ClickToFlash, so maybe there’s hope.)

(With apologies to Queen.)

(Kudos to Daring Fireball for a lot of useful thought on this subject.)

Updated on March 22, 2010
Check out this Foxtrot strip.  Great gag!

No comments:

Post a Comment