From 83fd829cd5eb0ec402063ee9b61a7a8ba2cea448 Mon Sep 17 00:00:00 2001 From: Richard Zink Date: Thu, 8 Oct 2026 08:42:43 +0200 Subject: [PATCH] Cache-buster + remove diagnostic logs User's browser showed 404 and CORS errors for Carto tiles even though curl shows the URLs return 200 with CORS headers. Most likely the browser had cached earlier failed attempts. Added a per-tile cache-buster (?v=Date.now()+random) to the fetch URL so every tile request bypasses the browser's HTTP cache. Removed the diagnostic console.log lines since the issue is identified (browser cache). --- vendor/clouds3d.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/vendor/clouds3d.js b/vendor/clouds3d.js index 7f76261..7506955 100644 --- a/vendor/clouds3d.js +++ b/vendor/clouds3d.js @@ -318,8 +318,11 @@ function fetchTileImage(tileX, tileY) { img.crossOrigin = 'anonymous'; img.onload = function() { resolve(img); }; img.onerror = function() { reject(new Error('tile fetch failed')); }; - // Carto/OSM-style format: {z}/{x}/{y}.png - img.src = GROUND_TILE_URL + GROUND_TILE_Z + '/' + tileX + '/' + tileY; + // Carto/OSM-style format: {z}/{x}/{y}.png with a per-tile cache + // buster to avoid any browser-cached 404s or CORS rejections + // from previous failed loads. + img.src = GROUND_TILE_URL + GROUND_TILE_Z + '/' + tileX + '/' + tileY + + '?v=' + Date.now() + '_' + Math.floor(Math.random() * 1e6); }); } @@ -397,8 +400,7 @@ function drawTileAt(lng, perp, dx, dz, centerTileX, centerTileY) { mirrorLabel('x=' + tileX, canvasX + GROUND_TILE_SIZE - 12, canvasY + GROUND_TILE_SIZE - 12, 'left'); return true; - }).catch(function(err) { - console.warn('[clouds3d] tile fetch failed', tileX, tileY, err && err.message); + }).catch(function() { // On failure draw a neutral gray so the gap is at least // not the bright fog colour groundCtx.fillStyle = '#3a4458'; @@ -450,7 +452,6 @@ function rebuildGroundMosaic(centerTileX, centerTileY) { // smooth parallax within the loaded content. function refreshGroundMosaic() { if (!groundCtx) return; - console.log('[clouds3d] refreshGroundMosaic center', groundCenterTile); var fdx = (window.__flightDir && window.__flightDir.dx) || 0; var fdz = (window.__flightDir && window.__flightDir.dz) || 1; var camX = (fdx !== 0) ? groundCameraX * fdx : 0;