One way you can handle this is to hash or digest your gear data, and first send the digest to as "have you seen a gear item with this description recently?"
If the party on the other side says no, you reply with the full data.
They associate that gear data with the digest in a cache, so if the player with this gear swaps it in & out frequently or leaves & comes back, you don't need to re-transmit the full data every time.
If you keep the maximum lifetime of an item in the cache low relative to the size of your digest, then your chances of having a collision from two different gear items producing the same digest can be made quite small - the two items would need to be seen within a short time of one another.
You can further reduce the risk of collision by doing a higher-detail check when I'm in direct interaction with someone - if they're one of the 3 players closest to me or we're using game abilities on one another, we can ask for a different/larger digest to verify that we're showing the correct equipment.
This can be combined with a level of detail system. If a player enters the area a kilometer away, the server can send me the lowest-detail version of the gear, maybe just its base colour value.
As the player comes closer, the server can ask me "Have you seen gear item A8675E875EC24A245D0 at medium detail?" and I say "no," so it sends me a medium-detail version of it suitable for display at that distance.
If we enter within a few meters of each other, the server can ask "Have you seen gear item A8675E875EC24A245D0 at high detail?" and I say "no," so it sends the full data. This way we only send as much information as is needed to adequately display the content.