Если я вас правильно понял, у вас есть пример кода, повторенный 5000 раз, с '4821', широтой и шириной строки и строкой содержимого для каждого из 5000 маркеров?
Если это так, то вам нужноизмените свой подход так, чтобы это были повторяющиеся данные, а не код ...
var markers = [
[43.0754329,-71.4699752,"Info for first marker"],
[45.0473490,-56.47688356,"Info for second marker"],
.
.
.
[20.1234384,12.23462566,"Info for last marker"]
];
for(var i=0; i < markers.length; i++){
var latLng = new google.maps.LatLng(markers[i][0], markers[i][1]);
var contentString = markers[i][2];
var infowindow = new google.maps.InfoWindow({content: contentString});
var marker = new google.maps.Marker({
position: latlng,
map: map,
icon: image
});
google.maps.event.addListener(marker, 'click', function()
{
infowindow.open(map,marker);
});
}
Это значительно уменьшит размер вашей страницы и, вероятно, решит проблему с кэшированием.
Слово предостережения - приведенный выше код просто иллюстрирует, как удалить повторяющийся код и заменить его поиском данных, но могут возникнуть проблемы с одновременным созданием такого количества экземпляров InfoWindow (вам, вероятно, будет лучшесоздание InfoWindow внутри слушателя. Кроме того, я не совсем уверен в видимости переменных в замыканиях, поэтому вы можете получить 5000 маркеров, имеющих атрибуты последнего элемента в списке (могут потребоваться небольшие изменения)