typically you don't cache posts. the post body is not part of routing, so it can not be used to effect the cache. caching is controlled by the url and headers.
a more typical solution is the post/redirect/get. in your case you would tag by widget id, and the post would invalidate the widget tag and redirect to the get. this would also cause the subisquent gets to use get built from the new post data.