estimada:
 
      yo realize un BALANCE SCORECARD, el cual por medio de datos dinamicos creo graficas y tablas, y tenia el mismo problema. 
      esto lo solucione usando la siguiente funcion  
 Código PHP:
            function cabecera()
         {
         header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
         header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
         header( 'Cache-Control: no-store, no-cache, must-revalidate' );
         header( 'Cache-Control: post-check=0, pre-check=0', false );
         header( 'Pragma: no-cache' );
         } 
    
        la cual no varia mucho de tu codigo, pero lo que si me funcaba es que toda la parafernalia de marcos y menus lo armaba primero, sin estas cabeceras para que no cargase nuevamente las imagenes, y en un iframe cargaba el grafico o  la tabla, y en esa le mandaba la funcion descrita. 
      con esto se acabaron los problemas de la cache... 
      atte, 
             ISKARIOTE