The best we can figure out is that cancer is "multifactorial". Many things have to go haywire for cancer to take root and grow; and cancer is not just one disease, it is many different diseases.
Some cancers have a viral basis (cervical cancer and the HPV virus), but most cancers are genetic/environmental in origin. "Genes load the gun, environment pulls the trigger". Well, sometimes. If a person inhereits a highly penetrant gene mutation from either parent, such as those associated with BRCA1 or BRCA2 cancer predisposition syndrome, that person's odds to develop breast cancer at an early age (under 50) are extremely high...and the environment will have very little to do with it.
However, most cancers (about 70%) occur in people over age 50 who have no personal or family risk factors for the type of cancer they end up being diagnosed with. Those are non-hereditary cancers caused by interactions between genes and the environment and are actually pretty common as we age. There is no one answer unfortunately. The only way to prevent cancer or fix it when it occurs? Genetic engineering to correct the genetic protein that fails when specific gene mutations occur. Sounds so simple...but it is soooo complex. We are just not there yet.
Targeted therapies for individual tumor personalities are a good alternative in a field called pharmacogenetics and we see that now with certain drugs such as GLEEVEC and HERCEPTIN. It's a way to kill a specific tree instead of burning down the whole forrest when treating certain cancers.