We have to be careful to distinguish between conditional execution of a method, and conditional return of the response. In the case of GET, since it nominally has no side effects, conditional execution of the method is not so important. But if we start applying conditionality to POST, PUT, etc., it is *critical* to be absolutely clear about what aspect of the action and response is conditional.
Some people believe any response is cachable if it includes the 'right' headers. What headers are right?
In this case, the when the browser knowsa-priori that the response will not be cachable, it can supply a "Pragma: no-cache" header in its request, and the firewall proxy can be smart enough to talk directly to the origin server without going up through the proxy hierarchy.