Здравствуйте, Homunculus, Вы писали:
H>У меня есть гигантская детализированная SVG карта города. Размером около 1.5 гигов. H>Ясно, что и загрузка и рендеринг занимает кучу времени. Надо оптимизировать.
H>Как рендерят большие карты?
В SVG пространственные данные обычно не хранят. Лучше использовать специализированные форматы данных, особенно если город географически большой по размеру (чтобы учесть широту и долготу и текущую проекцию, т.к. проекции есть разные, и нужно понимать в какой именно проекции была изначальная переведенная в svg карта, если это не учитывать то рано или поздно появятся трудноуловимые и труднопонимаемые баги с нарушением координат).
Как рендерить, можно посмотреть опенсорсный GeoServer (это сервер, написанный на Java, который как раз умеет рендерить большие карты) + OpenLayers (это клиентская библиотека, которая позволяет рисовать карты, отдаваемые тем же GeoServer, в браузере).
У него есть несколько способов, но все они завязаны на тайловую структуру, т.е. карта всегда бьется на куски, причем на разных масштабах, и эти тайлы отдаются клиенту.
Отдаются клиенту тайлы либо в виде векторных (тут уже SVG можно использовать), либо растровых изображений. Их как правило кешируют, сервер делает это и на своей стороне, и клиент также может их кешировать у себя.