From 98f064e4fdea8a143c207ca1b8da3e0b62b6405d Mon Sep 17 00:00:00 2001 From: Jean Baptiste Favre Date: Sat, 3 Sep 2011 21:11:31 +0200 Subject: [PATCH] Adds new feature to dispatch avatar url between different servers. That allows parallel download from most browsers. To avoid caching issue, server choice is "profile_id" based so that avatar from a specific user will always be served from same server. Introduce new configuration parameter: $config['avatar']['server_modulo'] = 5; Very easy to implement using, for example, DNS wildcard. For example, if you have following configuration: $config['avatar']['server'] = 'static_rrdns_.domain.tld'; $config['avatar']['server_modulo'] = 5; Then, when building avatar's URL, domain will become, depending on profile_id: static0.domain.tld static1.domain.tld static2.domain.tld static3.domain.tld static4.domain.tld --- classes/Avatar.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/classes/Avatar.php b/classes/Avatar.php index 6edc817685..636eb77f9c 100644 --- a/classes/Avatar.php +++ b/classes/Avatar.php @@ -103,7 +103,11 @@ class Avatar extends Memcached_DataObject { $server = common_config('avatar', 'server'); if ($server) { - return Avatar::url($this->filename); + if (common_config('avatar', 'server_modulo') && common_config('avatar', 'server_modulo') > 1 ){ + return str_replace( '_rrdns_', ( $this->profile_id % common_config('avatar', 'server_modulo') ), Avatar::url($this->filename) ); + }else{ + return Avatar::url($this->filename); + } } else { return $this->url; } -- 2.39.5