if there is anything remotely dynamic in your app go with option 2.
i've mainland proxied and cached the hell out of everything i can, warm the caches daily, but once the user starts interacting (eg search) then hitting our servers really bites randomly. usually not so bad for honkers server, but even that route can randomly drop off the face of the planet.
hmm, option 3 looks interesting. i would need to test it to have confidence in it (especially over problematic periods like golden week), but having your server in honkers is a big plus over the other side.
i've mainland proxied and cached the hell out of everything i can, warm the caches daily, but once the user starts interacting (eg search) then hitting our servers really bites randomly. usually not so bad for honkers server, but even that route can randomly drop off the face of the planet.