Improve browser cache behavior with tiles (cache more often)

This commit is contained in:
Mike Primm 2012-01-03 05:07:31 +08:00 committed by mikeprimm
parent bb40f9b281
commit a9b9a7c5c6
2 changed files with 12 additions and 21 deletions

View File

@ -69,7 +69,7 @@ var DynmapTileLayer = L.TileLayer.extend({
var tileName = this.getTileName(tilePoint, zoom);
var url = this._cachedTileUrls[tileName];
if (!url) {
this._cachedTileUrls[tileName] = url = this.options.dynmap.getTileUrl(tileName) + '?' + new Date().getUTCMilliseconds();
this._cachedTileUrls[tileName] = url = this.options.dynmap.getTileUrl(tileName);
}
return url;
},

View File

@ -412,7 +412,12 @@ DynMap.prototype = {
var prevzoom = me.map.getZoom();
var prevworld = me.world;
if(worldChanged) { // World changed - purge URL cache (tile updates unreported for other worlds)
me.registeredTiles = [];
me.inittime = new Date().getTime();
}
if(worldChanged && me.world) {
me.world.lastcenter = me.maptype.getProjection().fromLatLngToLocation(me.map.getCenter(), 64);
}
@ -623,30 +628,16 @@ DynMap.prototype = {
var me = this;
var tile = me.registeredTiles[tileName];
if(tile) {
return me.options.tileUrl + me.world.name + '/' + tileName + '?' + tile.lastseen;
} else {
return me.options.tileUrl + me.world.name + '/' + tileName + '?' + me.inittime; /* Browser cache fix on reload */
if(tile == null) {
tile = this.registeredTiles[tileName] = me.options.tileUrl + me.world.name + '/' + tileName + '?' + me.inittime;
}
},
registerTile: function(mapType, tileName, tile) {
this.registeredTiles[tileName] = {
tileElement: tile,
mapType: mapType,
lastseen: '0'
};
},
unregisterTile: function(mapType, tileName) {
delete this.registeredTiles[tileName];
return tile;
},
onTileUpdated: function(tileName,timestamp) {
var me = this;
var tile = this.registeredTiles[tileName];
this.registeredTiles[tileName] = me.options.tileUrl + me.world.name + '/' + tileName + '?' + timestamp;
if (tile) {
tile.lastseen = timestamp;
tile.mapType.onTileUpdated(tile.tileElement, tileName);
}
me.maptype.updateNamedTile(tileName);
},
addPlayer: function(update) {