Question on exporting model from blender

I have a basic scene in blender, one plane and one building in the center.

When I export that without materials, it weighs ~100kb, but with the materials, it’s 40mb. I’ve inspected my exported model with https://gltf.report/ and it looks like some textures are very heavy because I’m importing procedural textures from blenderkit.

Questions:

  1. If I bake the textures, should I do it for the whole building ( 1 UV map ) or each object individually?

  2. I’m planning to build the whole city, so eventually, 1 material will be applied to 100 places, how is it beneficial to bake that material and create 100 UVs rather than referencing that material 100 times?

  3. I have ~50 instances of a window object on the building, is it wise to export that object apart from the rest of the building and then attach it in a three.js scene rather than exporting everything at once?
    Is blender “smart enough” to realize that it’s the same object that repeats and does optimization on its own?

Blender won’t do any merging operations like you describe, but some of the mesh compression tools may do that kind of optimization. Also if you have actual instances in blender, i.e. Alt-D duplicates not Shift-D duplicates… then they will share the same geometry and data.
If they are shift-D duplicates they will be unique geometries i think, and take more space.

Generally the less textures the better… since each texture switch is a gpu sync.