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
{
$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;
}