19. many improvements since then
➔ YSlow?
➔ The Expires header is your friend!
➔ Hot MyISAM tables converted to InnoDB
➔ MySQL Master/Master setup
➔ Jet Profiler
25. Avatars wtf!?
my $sql = DBConnect('master');
my %user = $sql->get(
"SELECT a.blob, a.filename,
FROM avatars a, users u
WHERE u.user=? AND u.id=a.user",
$user);
$req->print( $user{'blob'} );
26. Avatars - reloaded
➔ Export to balanced fs (5 formats)
➔ Zero SQL queries
➔ Storage subsystem
➔ static.myopera.com was born
27. resources
(user uploads, binary blobs, ...)
Pools
or single servers
URLs
http://static.myopera.com/pool1/avatars/a4/754/a1b2c3d4e5f6.../<userid>_o.png
http://static.myopera.com/pool1/avatars/a4/754/a1b2c3d4e5f6.../<userid>_t.jpg
http://static.myopera.com/pool1/avatars/a4/754/a1b2c3d4e5f6.../<userid>_m.jpg
http://static.myopera.com/pool1/avatars/a4/754/a1b2c3d4e5f6.../<userid>_l.jpg