Empty image src can destroy your site
nczonline.net
nczonline.net
I'm doing 500 hits per second right now, do I care if it becomes 600 or 700? Not at all, because that's still a nice, safe, comfortable distance from my maximum capacity.
Capacity planning is complex enough that I wouldn't make such a blanket statement so judgmentally.
1. That what I said was hypothetical. It wasn't. This happened.
2. That one pageview amounts to no more effect on a server than causing it to process another request and send a few more bytes down the wire.
If you're serving a static HTML page, then an extra pageview probably isn't a big deal. If you're serving an uncacheable, dynamic page that must federate requests to many, many different backends and pull in live content in real time, one pageview is a big deal.
And even if you have enough capacity to handle 3 or 4 or 10 times your usual load, when dynamic pageviews suddenly double (or worse, if there are multiple sourceless images on the page) for no apparent reason, a whole shitload of alarms go off, and it's not the sort of thing you just ignore. It indicates a Problem. It might be just a Problem right now, but it could very soon become a Big Problem. Which is why you try to fix it right away, no matter how big your safety margin is.
What's more likely is that very few large sites are experiencing this problem, and of the smaller sites that may have experienced it, many probably never even knew it, and those that knew it probably said "huh, weird", fixed it, and didn't bother mentioning it to anyone.
Nicholas Zakas and Yahoo! are trying to get browsers to actually fix the problem in order to prevent this from happening to other people, while also spreading the word so that people realize this is a potential problem.
One place other than simple server load where this problem could be extremely harmful is in measuring ad impressions. Even if the extra pageviews aren't enough to create a blip on your capacity radar, if you're telling advertisers that you served x-million impressions when only half of those were actually seen by users, it's going to seriously screw up your clickthru metrics, and your advertisers are going to be pretty pissed.
Of course, finding this was actually a good thing, because we could not only fix the empty background image but als fix the whole page so that a) the processing is done in the background and b) the result is cached.
So if you are careful about your architecture, an empty image url or two really is a non-issue. If on the other hand, you are not careful, 10 empty image urls on the wrong page can really take down your machine.
There IS a difference between 50 and 500 concurrent users.
And then traffic doubles.
It's easy to imagine the hurt.
Not only that, but the client's browser probably caches it anyway.
I can make sense of the IE bug: "" doesn't start with a protocol, like "http://, so it's not a full URL. It doesn't start with "/", so it's not relative to the server root. Therefore, it must be a relative URL, and the browser tries to download the image named "" in the same directory as the page.
But the Safari and Chrome problem baffles me. To have happened in Safari, Chrome, and Firefox, it must be a pretty straightforward mistake, but I just can't see it. Anyone else have guesses?
(Safari and Chrome admittedly use the same rendering engine, but still, Firefox doesn't.)
I learned this the hard way recently while working on an Apache Wicket app, see my mailing list post: http://old.nabble.com/Nasty-problem-with-%22component-not-fo....
Something like <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
Wasn't destroying my site, but good to fix regardless.