Credo di aver capito la situazione.
Devi duplicare il sistema di cache e fai salvare con due id differenti, uno per p=uno ed un altro per p=due.
Se l'utente richiede p=uno restituisci la cache di p=uno altrimenti restituisci quella di p=due.

In codice dovrebbe essere una cosa così (cmq poco raffinata ma dovrebbe funzionare).

codice:
$page_id_1 = "miapagina.php-puno";
$page_id_2 = "miapagina.php-pdue";
$timeout = 60;
$page_id=(!empty($_GET['p'])&&$_GET['p']=='due')?$page_id_2:$page_id_1;
$path = "./chached/".$page_id;

if(!file_exists("./chached /"))
   mkdir("./chached /");

if(file_exists($path) and filemtime($path) + $timeout > time()) {
   $result = readfile($path);
   if($result)
      exit();
}

set_time_limit(0);
ob_start();

if($page_id===$page_id_1){
  //codice per p=uno
}
else {
  //codice per p=due
}

$output = ob_get_flush();

$fp = fopen($path, "w");
fwrite($fp, $output, strlen($output));
fclose($fp);