A cap is not the solution. Caps are designed to lower spending on players.
To me, the solution is to increase revenue sharing but only on a condition of winning. Owners need to be financially incentivized to win. If you are a team that pays into revenue sharing then the more you win the lower percentage you pay into revenue sharing. If you are a team that received revenue sharing then the more you win the more you collect.
If the Rays can win the AL on a $60 million payroll then good for them. If the pirates lose 110 games with a $40 million payroll they should collect less revenue sharing money than the Rays do. If the big market Cubs want to tank then they should pay a higher percentage into revenue sharing than the big market teams that don’t tank.