My method is a little more unorthodox, but it's cheap, and I'd wager better than off the shelf products. Learned it from other mountaineerers/hikers.
Simple soap, the bars you buy in the supermarket. wittle half a bar of shavings into a pan, and boil it until it's dissovled.
Then put it in a bucket, fill with water, and clean the roof thoroughly with a regular car sponge. The dirt will just lift out, without the soap damaging any current water proofing.
Let it dry completely.
Then paint Fabsil onto it with a paint brush, and buff with a soft cloth.
It leaves no brush marks, restores the colour, and is one of the best hydrophobic coatings on the market.