Soap, water and a brush on a long handle.
For me when it's real dirty, it's....
Soap, water and a brush with no handle so I can scrub it better. But that does require me being on the roof.
For exceptionally stubborn spots, try a little household bleach. Place a washcloth-rag over the area and put a splash of bleach onto it and let it soak for a little while. Then scrub again.
Tree sap is another animal. When the rig is clean and dry, try some kerosene on a rag.