diff --git a/lib/cartodb/cache/named_map_provider_cache.js b/lib/cartodb/cache/named_map_provider_cache.js index 49dc6e49..e4c3dccc 100644 --- a/lib/cartodb/cache/named_map_provider_cache.js +++ b/lib/cartodb/cache/named_map_provider_cache.js @@ -1,3 +1,5 @@ +var _ = require('underscore'); +var dot = require('dot'); var NamedMapMapConfigProvider = require('../models/mapconfig/named_map_provider'); var templateName = require('../backends/template_maps').templateName; @@ -18,7 +20,7 @@ NamedMapProviderCache.prototype.get = function(user, templateId, config, authTok var namedMapKey = createNamedMapKey(user, templateId); var namedMapProviders = this.providerCache.get(namedMapKey) || {}; - var providerKey = createProviderKey(config, authToken); + var providerKey = createProviderKey(config, authToken, params); if (!namedMapProviders.hasOwnProperty(providerKey)) { namedMapProviders[providerKey] = new NamedMapMapConfigProvider( this.templateMaps, @@ -45,6 +47,16 @@ function createNamedMapKey(user, templateId) { return user + ':' + templateName(templateId); } -function createProviderKey(config, authToken) { - return NamedMapMapConfigProvider.configHash(config) + ':' + authToken; +var providerKey = '{{=it.authToken}}:{{=it.configHash}}:{{=it.format}}:{{=it.layer}}:{{=it.scale_factor}}'; +var providerKeyTpl = dot.template(providerKey); + +function createProviderKey(config, authToken, params) { + var tplValues = _.defaults({}, params, { + authToken: authToken || '', + configHash: NamedMapMapConfigProvider.configHash(config), + layer: '', + format: '', + scale_factor: 1 + }); + return providerKeyTpl(tplValues); }